[英]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 表示法定位的范圍。 在這種情況下,您需要非常小心地信任所有代理。
將您的 Web 服務器配置為不響應來自負載均衡器以外的任何客戶端的流量。 對於 AWS,這可以通過安全組來完成。
一旦你保證流量只會來自你信任的反向代理,配置 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.