问题描述: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; } }
重启网站并确认重定向起做用。