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

时间:2017-10-14 05:35:36

标签: ssl nginx https amazon-elb

我尝试做的非常简单,我正在使用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 显示我的vpn的IP,当我得到502时, $ remote_addr 显示另一个不同的IP。

有人可以帮忙吗? 感谢

1 个答案:

答案 0 :(得分:2)

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