ssl - Application Load Balancer + Nginx http 到 https 重定向给出 502 Bad Gateway

标签 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 个目标组 (TG1),其中 1 个目标实例在端口 80 和 443 上都注册了。我需要设置 2 个不同的目标组,1 个注册到 443 端口,另外 1 个注册到 80 端口。

关于ssl - Application Load Balancer + Nginx http 到 https 重定向给出 502 Bad Gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46741262/

相关文章:

android - repo 同步 : Fatal Error

c# - 如何清除通用 Windows 平台应用程序中的证书缓存?

ssl - 在 Ubuntu 16.04 上使用 ssl 从 www 重定向到非 www 无法在 Nginx 中工作

java - 无法使用 HTTPS 使用 AWS S3 Java API 访问 S3 上的存储桶

Android HTTPS 连接基础

css - Font Awesome 与 HTTPS

c# - "RESPONSE_Strict_Transport_Security"用于在 IIS 中强制使用 SSL 的服务器变量

r - HTTPS 用于 Shiny 的应用程序?

nginx - 指定--restart开关后,为什么我的Nginx docker 容器无法启动

amazon-web-services - Kibana没有正确加载。使用Nginx反向代理设置后