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
( ... )