Nginx-Proxy übergibt URL vom Get-Argument

Nginx-Proxy übergibt URL vom Get-Argument

Nehmen wir an, ich habe einen Server example.commit 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=ywenn GET example.com/proxy/http://www.google.pl/image.png?x=yeine 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_argswird auf gesetzt, ?wenn die Anforderungszeile Argumente hat, andernfalls auf eine leere Zeichenfolge und $argsenthä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 $1eingeschlossen ist .( ... )

verwandte Informationen