問題描述:nginx
新業務正式環境部署,使用雲負載(有http監聽也有https監聽)在我向個人 Web 服務器添加劇定向邏輯後,個人網站中止工做,而且我收到錯誤 ERR_TOO_MANY_REDIRECTS。負載均衡器將卸載 SSL,而且後端僅偵聽單個 HTTP 端口。我想將經過負載均衡器在端口 80 上傳入個人 Web 服務器的全部流量重定向至 HTTPS 端口 443,但我不想將個人後端偵聽器更改成端口 443。我如何解決此問題?apache
如下狀況將致使負載均衡器和後端 Web 服務器之間出現無限重定向循環:後端
將返回錯誤 ERR_TOO_MANY_REDIRECTS,而且毫不支持請求。服務器
解決辦法:負載均衡
一、Apache 服務器:虛擬主機文件方法(推薦)網站
在配置文件的虛擬主機部分中包含重寫規則。例如,對於 Apache httpd server,編輯 /etc/httpd/conf/httpd.conf 文件;對於 Apache 2.4,編輯 /etc/apache2/sites-enabled/ 文件夾中的 .conf 文件。spa
<VirtualHost *:80> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] </VirtualHost>
二、NGINX 服務器code
注意:適用於 nginx/1.10.3 (Ubuntu) 和 nginx/1.12.1。server
修改如下示例重寫規則 (nginx.conf):blog
server { listen 80; server_name _; if ($http_x_forwarded_proto = 'http'){ return 301 https://$host$request_uri; } }
重啓網站並確認重定向起做用。