簡體   English   中英

在 Symfony PHP 中強制使用 HTTPS 會導致 AWS 負載均衡器后面的重定向循環

[英]Forcing HTTPS in Symfony PHP causes redirect loop behind AWS load balancer

我試圖在我的 Symfony PHP 應用程序中強制使用 HTTPS。 關於這個主題的文檔看起來很簡單:

# config/routes.yaml
secure:
    path:       /secure
    controller: App\Controller\MainController::secure
    schemes:    [https]

基本上只需添加schemes: [https]到路線。

但是當我在我的應用程序中執行此操作並部署(到使用負載均衡器的 AWS EC2 實例)時,它似乎創建了一個重定向循環。

在此處輸入圖片說明

這里可能有什么問題?

文檔說:

在使用反向代理或負載平衡器時強制使用 HTTPS 需要適當的配置以避免無限重定向循環

這反過來又帶你到這里 由於您無法知道負載均衡器的 IP 地址(因為 AWS),文檔說:

某些反向代理(如 AWS Elastic Load Balancing)沒有靜態 IP 地址,甚至沒有可以使用 CIDR 表示法定位的范圍。 在這種情況下,您需要非常小心地信任所有代理。

  1. 將您的 Web 服務器配置為不響應來自負載均衡器以外的任何客戶端的流量。 對於 AWS,這可以通過安全組來完成。

  2. 一旦你保證流量只會來自你信任的反向代理,配置 Symfony 以始終信任傳入的請求:

 // public/index.php // ... Request::setTrustedProxies( // trust *all* requests ['127.0.0.1', $request->server->get('REMOTE_ADDR')],> // if you're using ELB, otherwise use a constant from above Request::HEADER_X_FORWARDED_AWS_ELB );

如果您按照此步驟進行操作,並且其他所有內容都已正確配置,那么您應該一切順利。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM