Https

使用 wordpress https 外掛的 AWS ELB 和 wordpress 站點的無限重定向循環

  • August 15, 2020

我已將 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)

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