Nginx

X-Forward-Proto 自定義標頭

  • January 13, 2018

我正在利用 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;
}

希望這會有所幫助。謝謝

引用自:https://serverfault.com/questions/891380