zoukankan      html  css  js  c++  java
  • 使用云负载时将http的请求转发至https时报错:“ERR_TOO_MANY_REDIRECTS”!

    问题描述:

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

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

    1. 用于将 HTTP 请求重定向至 HTTPS 的 Web 服务器上的重写规则会强制实施请求以对负载均衡器上的 HTTPS 流量使用端口 443。
    2. 负载均衡器仍会将请求发送到端口 80 上的后端 Web 服务器。
    3. 后端 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;
        }
    }

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

  • 相关阅读:
    Install JDK In Ubuntu
    js初学—实现checkbox全选功能
    js初学—js全自定义单选框
    poj1679The Unique MST(次小生成树模板)
    hdu3486Interviewe(二分是错的)(ST算法RMQ + 判定上下界枚举)
    poj3974 Palindrome(Manacher最长回文)
    poj1734 Sightseeing trip(Floyd求无向图最小环)
    BZOJ1123 [POI2008]BLO(割点判断 + 点双联通缩点size)
    2.2 logistic回归
    神经网络的火热
  • 原文地址:https://www.cnblogs.com/hei-ma/p/10059889.html
Copyright © 2011-2022 走看看