Nehmen wir an, ich habe einen Server example.com
mit Nginx.
Ich möchte einen Proxy erstellen, der die als Teil der Anforderungs-URI oder des GET-Parameters angegebene URL weiterleitet (er kann eine Abfragezeichenfolge enthalten).
Ich möchte beispielsweise, dass Nginx die Aufgabe auflöst, http://www.google.pl/image.png?x=y
wenn GET example.com/proxy/http://www.google.pl/image.png?x=y
eine Anforderung gestellt wird.
Ich habe so etwas versucht:
location /proxy {
rewrite /proxy(.*) /$1 break;
resolver 8.8.8.8;
proxy_pass http://$arg_host/$arg_uri?$query_string;
}
Vielleicht möchte ich eine Weiterleitung? Nehmen wir an, ich möchte Bilder bereitstellen, die sich auf einem anderen Server befinden als meine (auf meiner Domain).
Antwort1
Versuche dies:
location ~ /proxy/(http://.*) {
resolver 8.8.8.8;
proxy_pass http://$1$is_args$args;
}
Kein explizites Umschreiben erforderlich. $is_args
wird auf gesetzt, ?
wenn die Anforderungszeile Argumente hat, andernfalls auf eine leere Zeichenfolge und $args
enthält die Parameter in der Anforderung (außer ?
) oder eine leere Zeichenfolge, wenn keine Abfrageparameter vorhanden waren. stimmt mit dem Teil der URI überein, der im Standort-Regex $1
eingeschlossen ist .( ... )