[英]Jelastic Nginx http to https redirect
我在Jelastic中有一個帳戶,我想強制我的網站只能通過https進行工作。 我創建環境的nginx + PHP nginx的平衡器和啟用SSL Jelastic(因為它描述這里 )。
每當我嘗試設置301從http重定向到https都沒有運氣時。 使用mod_rewrite對我不起作用,我唯一得到的就是循環重定向。 Google沒有幫助。
我真的需要勸告。 將提供任何其他信息。
提前致謝。
如果您使用的是Jelastic SSL,則意味着您在共享的Jelastic解析器上有SSL卸載=對服務器的所有請求都是http(不是http / https)。
您需要檢查X-Forwarded-Proto標頭,以識別最初是https的請求。
確實,當您啟用Jelastic SSL(意味着您不能使用公共IP)共享解析器時,它將處理對服務器的所有請求,但在解析器和服務器之間的請求不是https。 因此,通過重定向,您嘗試進行設置,服務器將傳入的http請求重定向到https並將其發送回解析器,結果您得到了循環重定向。
您需要執行一些簡單的步驟來解決此問題。 登錄到儀表板,打開Nginx Balancer的設置
導航到/ conf下的nginx-jelastic.conf
並將代碼添加到配置文件中:
# force https-redirects
if ($http_X_Forwarded_Proto = http) {
return 302 https://$host$request_uri;
}
完成配置后,請不要忘記按下“保存”按鈕並重新啟動Nginx。
(Всемпривет)使用域ssl,此變體可以正常工作
if ( $scheme = "http" ) { rewrite ^(.*)$ https://$host$1 last; }
接受的解決方案不適用於我的設置。 我必須將if語句更改為以下內容:
if ($http_x_forwarded_proto != "https") {
return 301 https://$host$request_uri;
}
如官方的Nginx文檔https://www.nginx.com/blog/creating-nginx-rewrite-rules#https中所述,您應該使用:
return 301 https://$host$request_uri;
效果也不錯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.