nginxがリバースプロキシとして構成されている場合、ホストヘッダーをApacheのProxyPreserveHostのようなダウンストリームサーバーに書き換えることはできますか?


回答:


11

私は問題の解決策を見つけたと思います。ダウンストリームサーバーのホストの送信はnginxのデフォルトの動作であり、ディレクティブを使用してオーバーライドしました。

proxy_set_header Host $host;

ブラウザが要求したホストをダウンストリームサーバーに送信します。まさに私が望んだものの反対。

したがって、nginxにはApacheに相当するものはありませんがProxyPreserveHostproxy_set_headerディレクティブで同じ動作を実現でき、nginxのソリューションはより一般的です。


する必要がありますproxy_set_header Host $http_host;
ロブ

@ Rob、$http_hostNginxのドキュメントによると存在しません:nginx.org/en/docs/varindex.html
ダニエルセロディオ

1
@DanielSerodio実際には、はい、少なくとも接続の99.99%は存在します。ドキュメントを参照してください。また、非常に微妙に異なり$hostます。
マイケルハンプトン

@MichaelHampton私は訂正しました、リンクのおかげで
ダニエルセロディオ

1

実例:

  set $s3_bucket 'SOMEBUCKET.s3.amazonaws.com';

  location / {
        send_timeout 5m;
        proxy_read_timeout 240;
        proxy_send_timeout 240;
        proxy_connect_timeout 240;
        proxy_http_version 1.1;
        proxy_set_header Host $s3_bucket;
        proxy_set_header Authorization '';
        proxy_hide_header x-amz-id-2;
        proxy_hide_header x-amz-request-id;
        proxy_ignore_headers "Set-Cookie";
        proxy_buffering off;
        proxy_intercept_errors on;
        proxy_redirect off;
        resolver 8.8.8.8;
        proxy_pass http://$s3_bucket;
        }

これはnginxを使用しています。
cod3fr3ak
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.