问题描述:

新业务正式环境部署,使用云负载(有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 *:>
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 ;
server_name _;
if ($http_x_forwarded_proto = 'http'){
return https://$host$request_uri;
}
}

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

最新文章

  1. oracle 误删数据恢复
  2. mysql压缩包安装配置
  3. centos下php安装swoole扩展
  4. Html 之菜单导航(二)
  5. JavaScript中的Array
  6. python_列表
  7. configs for postgresql restart and postgresql reload
  8. VisualStudio 调试不提示调试错误
  9. 分享php中四种webservice实现的简单架构方法及实例(转)
  10. 清橙 A1120 拦截导弹 -- 动态规划(最长上升子序列)
  11. 关于ognl.OgnlException: target is null for setProperty(null的解决方案
  12. partial 函数
  13. golang中container/list包源码分析
  14. 基于promtheus的监控解决方案
  15. fuel一键部署openstack
  16. SSIS - 11.For循环容器
  17. css自定义滚动条
  18. [转载] java多线程总结(二)
  19. 浏览器渲染页面的时候,不同的script块之间的关系
  20. 关于Ant脚本

热门文章

  1. #001 HTML快速入门讲解
  2. Python基础.md
  3. shell基础--字符串和变量的操作
  4. linq to sql 分页技术
  5. --provider=docker时出现的问题
  6. kaggle _Titanic: Machine Learning from Disaster
  7. Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method &#39;getUser&#39; in class org.uncommons.reportng.ReportMetadata threw exception class java.net.UnknownHostException :
  8. cgroup测试存储设备IOPS分配
  9. 查询job的几个语句
  10. Dom操作(标签--增、删、移动)