使用 wordpress https 外掛的 AWS ELB 和 wordpress 站點的無限重定向循環
我已將 AWS ELB 配置為指向執行 Wordpress 3.2.1 的 Ubuntu 伺服器。一切都在伺服器上執行良好,直到我把它放在負載均衡器後面。
我將負載均衡器設置為將埠 80 轉發到埠 80,將埠 443 轉發到埠 80。
我設置了我的虛擬主機文件以檢查來自 elb 的標頭:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule !/status https://% {SERVER_NAME}%{REQUEST_URI}
$$ L,R $$
現在,每當我訪問 https 網址時,都會收到以下消息:
此網頁存在重定向循環https://mywebsite.com/securepage/
上 的網頁導致重定向過多一旦我禁用 wordpress https 外掛
(http://wordpress.org/extend/plugins/wordpress-https/)
,頁面就可以工作,但現在充滿了混合內容。應該是 https 的頁面不再是 https。
一旦我直接訪問伺服器而不是通過 elb,它就會再次工作。
關於如何讓它與 AWS ELB 一起工作的任何想法?
如果您不發布 ELB 配置,我會冒險猜測 ELB 正在將 HTTPS (443/tcp) 流量重定向到 HTTP (80/tcp) 上的 EC2 實例。然後你
.htaccess
和外掛正試圖將它重定向回 HTTPS,因為它是通過 HTTP 看到的。去看看你的 EC2 控制台
Network & Security > Load Balancers
,我想你會看到Port Configuration
類似的內容443 forwarding to 80 (HTTPS, Certificate: blah)
嘗試將此添加到您的
httpd.conf
或.htaccess
SetEnvIfNoCase X-FORWARDED-PROTO "^https$" HTTPS
當使用負載均衡器 + HTTPS 時,您的網路伺服器不知道前端正在使用 HTTPS,因此不斷嘗試重定向到 HTTPS 站點,而事實上,HTTPS 已經在使用。
以上將亞馬遜的負載均衡器發送的標頭 (
X-Forwarded-Proto: https
) 轉換為 Wordpress 和其他 PHP 腳本可以理解的環境變數 (HTTPS=1
)