Nginx プロキシは get 引数から URL を渡す

Nginx プロキシは get 引数から 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

私は次のようなことを試しました:

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

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

リダイレクトが必要でしょうか? たとえば、自分のサーバー(自分のドメイン)にある画像とは異なるサーバーにある画像を提供したいとします。

答え1

これを試して:

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

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

関連情報