我有一個服務運行在谷歌雲,基本上幾臺機器後面谷歌http(s)負載平衡器。我設置了兩個平衡規則,一個用於http://和一個用於https://。我想要做的是將所有http://請求重定向到https://。有每個節點上運行Apache,所以我進行配置,如:使用301重定向http後面的谷歌雲負載平衡器
<VirtualHost *:80>
ServerName my.app.com
Redirect permanent/https://my.app.com
</VirtualHost>
<VirtualHost *:443>
ServerName my.app.com
SSLEngine On
....
</VirtualHost>
這應該讓Apache在有人的情況下,返回301訪問純HTTP。這工作得很好,直到我在谷歌的HTTP負載平衡器後面的移動從那時起,我得到400:
壞請求
您的瀏覽器發送的請求,該服務器無法理解。 原因:您正在向使用SSL的服務器端口說純HTTP。 請使用HTTPS方案訪問此URL。
阿帕奇/ 2.4.10(Debian的)在my.app.com服務器端口443
它看起來像谷歌負載平衡器消耗301,取而代之的是簡單的HTTP請求到https端點重定向轉發301的給客戶。我還沒有發現任何關於谷歌負載均衡器設置中3XX轉發的設置。有沒有人讓這種設置工作?
我不知道它會工作。 https背後的想法是它建立了瀏覽器(用戶)和服務器之間的安全連接。我認爲你應該把它發回客戶端,告訴他們切換到不同的協議。 – Grzenio
是的,多數民衆贊成我試圖實現 - 使負載平衡器轉發所有重定向到客戶端,而不是將原始http請求轉發到https端點。但我不知道該怎麼做...... :) –
端口80和端口443上的客戶端連接是ForwardingRules。負載均衡器會根據您配置BackendService的方式,在您的虛擬機上創建與Apache的連接。所以你的虛擬機只能看到80端口或443端口的流量;不是都。負載均衡層會將X-Forwarded-Proto設置爲'http'或'https',您可以使用它發送301. 可能您有不同的設置,但HTH。 –