应用程序负载均衡器 + Nginx http 到 https 重定向给出 502 Bad Gateway

Posted

技术标签:

【中文标题】应用程序负载均衡器 + Nginx http 到 https 重定向给出 502 Bad Gateway【英文标题】:Application Load Balancer + Nginx http to https redirect gives 502 Bad Gateway 【发布时间】:2018-03-26 06:14:04 【问题描述】:

我尝试做的事情非常简单,我正在使用 AWS 应用程序负载均衡器,并且我想将我的所有 http 请求重定向到 https: 我有以下设置: 具有两个侦听器的应用程序负载均衡器 (ALB1):

HTTP:80
HTTP:443

两个规则都转发到一个目标组 (TG1),其中 1 个目标实例在端口 80 和 443 上都注册了,并且都是健康的。

我的 nginx conf 有以下设置:

server 
    listen 80;
    server_name server_name;
    access_log /var/log/nginx/http_redirect.log;
    return 301 https://$server_name$request_uri;


server 
    server_name server_name;
    listen 443 ssl default_server;
    ...
    ...

但是,当我转到 http://server_name/ping 时,我希望它会被重定向到 https://server_name/ping,但我刚刚得到了一个 502 Bad Gateway,我检查了日志 /var/log/nginx/http_redirect.log,它显示如下:

172.xx.xx.xx - - [13/Oct/2017:22:31:13 -0700] "\x16\x03\x01\x00\xA5\x01\x00\x00\xA1\x03\x03|\xFE\xC1\x88\x9E\xC88\xF8\xCDLn\xBAV,\xCE\xAF\xAA\xF2\x9Axv\x16\xD0\xC2\xE6\xFBE\x95oi%\x01\x00\x00(\xC0+\xC0/\xC0#\xC0'\xC0\x09\xC0\x13\xC0,\xC00\xC0$\xC0(\xC0\x14\xC0" 400 181 "-" "-"

另外一个奇怪的是,如果我再次刷新页面,它给出的结果没有被重定向,然后再次刷新,我会再次得到502 Bbad Gateway,基本上,我会得到502 Bad Gateway和没有重定向的结果交替出现。仅供参考,我的 nginx 错误日志中没有任何内容。

更多观察:当我得到正确响应而不重定向时,$remote_addr 显示我的 *** 的 IP,当我得到 502 时,$remote_addr 显示另一个不同的 IP。

有人可以帮忙吗? 谢谢

【问题讨论】:

【参考方案1】:

我终于弄清楚出了什么问题,我设置应用程序负载均衡器的方式并不完全正确,我不能只有 1 个目标组 (TG1),其中 1 个目标实例同时在端口 80 和 443 上注册。我需要设置2个不同的目标组,1个注册443端口,1个注册80端口。

【讨论】:

伙计,你拯救了我的一天 :) !监听器和目标组的路由行为没有很好的描述

以上是关于应用程序负载均衡器 + Nginx http 到 https 重定向给出 502 Bad Gateway的主要内容,如果未能解决你的问题,请参考以下文章

180天云计算小白到大神-Nginx TCP负载均衡

Nginx作为HTTP负载均衡器

nginx负载均衡

nginx负载均衡

Nginx 负载均衡

nginx部署基于http负载均衡器