使用云负载时将http的请求转发至https时报错:“ERR_TOO_MANY_REDIRECTS”!

凨影 1353

问题描述

        新业务正式环境部署,使用云负载(有http监听也有https监听)在我向我的 Web 服务器添加重定向逻辑后,我的网站停止工作,并且我收到错误 ERR_TOO_MANY_REDIRECTS。负载均衡器将卸载 SSL,并且后端仅侦听单个 HTTP 端口。我想将通过负载均衡器在端口 80 上传入我的 Web 服务器的所有流量重定向至 HTTPS 端口 443,但我不想将我的后端侦听器更改为端口 443。我如何解决此问题?

以下情况将导致负载均衡器和后端 Web 服务器之间出现无限重定向循环:

用于将 HTTP 请求重定向至 HTTPS 的 Web 服务器上的重写规则会强制实施请求以对负载均衡器上的 HTTPS 流量使用端口 443。

负载均衡器仍会将请求发送到端口 80 上的后端 Web 服务器。

后端 Web 服务器将请求重定向至负载均衡器上的端口 443。

将返回错误 ERR_TOO_MANY_REDIRECTS,并且绝不支持请求。

解决办法:

1、Apache 服务器:虚拟主机文件方法(推荐)

在配置文件的虚拟主机部分中包含重写规则。例如,对于 Apache httpd server,编辑 /etc/httpd/conf/httpd.conf 文件;对于 Apache 2.4,编辑 /etc/apache2/sites-enabled/ 文件夹中的 .conf 文件。

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

2、NGINX 服务器

注意:适用于 nginx/1.10.3 (Ubuntu) 和 nginx/1.12.1。

修改以下示例重写规则 (nginx.conf):

server {
    listen 80;
    server_name _;
    if ($http_x_forwarded_proto = 'http'){
    return 301 https://$host$request_uri;
    }
}

重启网站并确认重定向起作用。

联系QQ:77798085 赞助请点这里
管理员回复
    全部回复 (10)
    • axiunn 2019-10-14
      2
      赠人玫瑰, 手留余香!
      亚太地区
      这个人很有个性,连签名都没有!
    • iboolqqcom 2019-11-28
      3
      小手一抖, 金币到手!
      亚太地区
      这个人很有个性,连签名都没有!
    • 2664322994qqcom 2020-2-27
      4
      楼主很辛苦,若是不回帖,心里过意不去,可是我打字实在不行,只好快速回复了,楼主不要见怪!
      亚太地区
      这个人很有个性,连签名都没有!
    • mojianxiaoxing 2020-3-28
      5
      心情不好,来杯板蓝根!
      亚太地区
      这个人很有个性,连签名都没有!
    • 喜羊羊 2020-4-16
      6
      小手一抖, 金币到手!
      亚太地区
      这个人很有个性,连签名都没有!
    • sukneet 2020-5-30
      7
      心情不好,来杯板蓝根!
      亚太地区
      这个人很有个性,连签名都没有!
    • 老衲已戒斋 2020-6-17
      8
      你就是我心中的那首忐忑,总是让我惊心动魄。
      亚太地区
      这个人很有个性,连签名都没有!
    • ipmore 2020-6-17
      9
      赠人玫瑰, 手留余香!
      亚太地区
      这个人很有个性,连签名都没有!
    • lkddi 2020-6-18
      10
      赠人玫瑰, 手留余香!
      亚太地区
      这个人很有个性,连签名都没有!
    • wwwmolyxcn 2020-6-18
      11
      看帖必回是好习惯!
      亚太地区
      这个人很有个性,连签名都没有!