2016-07-05 33 views
1

我設置了一個接受來自用戶的https連接的負載均衡器。然後使用http連接將計算引擎連接到負載均衡器。在Google Cloud中將http重定向到https

我已經寫以下.htaccess文件在根文件夾:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

現在,問題是,計算引擎總是通過HTTP鏈路(到負載平衡器),而不是HTTPS連接。

因此,即使URL以https開頭,.htaccess文件始終將連接視爲http而不是https。因此,即使URL是https,它也會嘗試將用戶發送到https的無限循環。

在這種情況下,應該如何將http重定向到https。

謝謝。

回答

7

您應該檢查X-Forwarded-Proto http標頭。它由負載均衡器設置,並具有值http或https。

+0

.htacces文件將是這樣的:的RewriteCond%!{HTTP:X - 轉發,原} HTTPS 重寫規則^ HTTPS://%{HTTP_HOST}%{REQUEST_URI} [L,R = 301] –

+0

喂倫納特。謝謝您的幫助 :) –

1

這花了這麼長時間才找到答案!非常感謝你@倫納特!

 

    [email protected]:/opt/bitnami/apps/wordpress/htdocs# head -4 /opt/bitnami/apps/wordpress/conf/htaccess.conf 

    RewriteEngine On 
    RewriteCond %{HTTP:X-Forwarded-Proto} =http 
    RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]