私はNginxをリバースプロキシとして使用しようとしており、上流サーバーはASP.NET Coreアプリケーションであり、ForwardedHeadersMiddleware
、3 つの異なるヘッダーを読み取りますX-Forwarded-*
。
X-Forwarded-For
X-Forwarded-Proto
X-Forwarded-Host
最初の 2 つは理解できましたが、最後の 1 つ ( ) はわかりにくいと思います。Nginx リバース プロキシ構成では、通常、ヘッダーが次のようにX-Forwarded-Host
書き換えられるのを見てきました。Host
location / {
proxy_pass http://app;
proxy_set_header Host $host;
}
しかし、代わりに が使用されているのも見ましたX-Forwarded-Host
:
location / {
proxy_pass http://app;
proxy_set_header X-Forwarded-Host $host;
}
場合によっては、両方が同時に使用されます。
location / {
proxy_pass http://app;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
}
何をすべきかわかりません。なぜ両方を同時に使用するのでしょうか?また、ヘッダーを直接X-Forwarded-Host
変更できるのであれば、なぜヘッダーを使用するのでしょうか?ASP.NET Coreアプリでは、または(または両方)を設定したかどうかに関係なく、どちらの場合でもHost
結果は同じであることに気づきました。Host
X-Forwarded-Host
HttpContext.Request.Host
もちろん、転送されたヘッダー ミドルウェアが登録されている場合は、期待される値に設定されます。
驚いたことに、この問題に関してグーグルで検索しても関連情報が見つからなかったので、ここで質問せざるを得ませんでした。このような状況では、どのようなアプローチが適切でしょうか?