Nginx
X-Forward-Proto 自定義標頭
我正在利用 AWS ALB,我的設置如下:
ALB]–HTTPS–
$$ NGINX $$–HTTP–$$ ALB $$–HTTP–$$ APP/NGINX $$ 問題是我正在使用 NGINX 通過 ALB 將 X-Forwarded-Proto=https 轉發到應用程序,但是 ALB 正在剝離它,應用程序需要 X-Forwarded-Proto=https 以便它可以發出安全 cookie 並設置STS 標頭。我們曾嘗試在 NGINX 中設置此標頭,但看起來 APP ALB 將其剝離。並且根據 AWS 支持,這是設計使然。
有一種解決方法可以使用自定義標頭從第一個 ALB 中保存 X-Forwarded-Proto 值並將其發送到第二個 ALB,並且在到達 APP 時不會被剝離,任何人都可以建議如何在 NGINX 上實現此功能或針對此問題提出不同的解決方法
從這個論壇連結中,他們說 Application Load Balancer 將通過 X-Forwarded-For/Proto/Port https://forums.aws.amazon.com/thread.jspa?messageID=738145。
如果在您的情況下 X-Forwarded-Proto 標頭始終獲得 HTTP 值。然後,這意味著 AWS ALB 不會剝離 X-Forwarded-Proto 標頭,而是會替換它。如果 AWS ALB 確實替換了 X-Forwarded-Proto,您可以使用自定義 HTTP 標頭在第一個 nginx 實例中傳遞標頭。像這個
Location /{ proxy_pass http://upstream; proxy_set_header X-Custom-Forwarded-Proto $http_x_forwarded_proto; }
希望這會有所幫助。謝謝