web-dev-qa-db-ja.com

get引数からのNginx proxy_pass url

Nginxを備えたサーバーexample.comがあるとします。

リクエストURIまたはGETパラメータの一部として指定されたURLをプロキシするプロキシを作成します(クエリ文字列が含まれる場合があります)。

したがって、たとえばhttp://www.google.pl/image.png?x=yリクエストが行われたときにnginxがGET example.com/proxy/http://www.google.pl/image.png?x=yを解決するようにします。

私はこのようにsthを試しました:

location /proxy {
    rewrite /proxy(.*) /$1 break;

  resolver 8.8.8.8;
  proxy_pass http://$arg_Host/$arg_uri?$query_string;
}

多分私はリダイレクトしたいですか?私のドメインとは別のサーバーにある画像を提供したいとします。

2
sebastiansito

これを試して:

location ~ /proxy/(http://.*) {
    resolver 8.8.8.8;
    proxy_pass http://$1$is_args$args;
}

明示的な書き換えは必要ありません。 $is_argsは、リクエスト行に引数がある場合は?に設定され、それ以外の場合は空の文字列に設定されます。$argsはリクエスト内のパラメーターを含みます(?を除く)またはクエリパラメータがない場合は空の文字列。 $1は、場所の正規表現の( ... )で囲まれたURIの部分と一致します。

1
Troy Morehouse