【问题标题】:How to solve 502 Bad Gateway errors with Elastic Load Balancer and EC2/Nginx for HTTPS requests?如何使用 Elastic Load Balancer 和 EC2/Nginx 解决 HTTPS 请求的 502 Bad Gateway 错误?
【发布时间】:2018-10-11 15:34:43
【问题描述】:

在运行 Nginx 的 EC2 实例前使用 AWS Elastic Load Balancer(应用程序类型)时,我遇到了 HTTPS 请求的“502 Bad Gateway”问题。 Nginx 在每个实例上充当为 Python 应用程序(Pyramid 框架)提供服务的服务员服务器的反向代理。我正在尝试在 ELB 上使用 TLS 终止,以便 EC2 实例仅处理 HTTP。这是粗略的设置:

客户端 HTTPS 请求 > ELB(监听 443,转发到后端的 80) > Nginx 监听端口 80(在 Ec2 实例上) > 转发到女服务员/Pyramid(在同一个 ec2 实例上)

当我在 HTTPS 上发出请求时,我收到 502 错误。但是,当我发出常规 HTTP 请求时,我得到了预期的响应(与上述设置相同,但 ELB 正在侦听端口 80)。

一些附加信息: ELB 运行状况检查正在运行。 所有 VPC/安全组都配置正确(我相信)。 我正在使用 AWS 上的标准设置/演练在 ELB 上使用 AWS 证书。 我通过 SSH 连接到 Ec2 实例,在 Nginx 访问日志中,看起来 HTTPS 请求仍然是加密的?还是一些编码问题?

这里是 EC2 实例上的 nginx.conf:

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    access_log /etc/nginx/access.log;  
    sendfile        on;

    # Configuration containing list of application servers
    upstream app_servers {

        server 127.0.0.1:6543;
    }   

    server {
        listen       80;
        server_name  [MY-EC2-SERVER-NAME];


        # Proxy connections to the application servers
        # app_servers
        location / {

            proxy_pass         http://app_servers;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;

        }
    }
}

【问题讨论】:

    标签: amazon-web-services nginx reverse-proxy amazon-elb


    【解决方案1】:

    好的,我想通了(我是个假人)。我在 ELB 上设置了两个监听器,一个用于 80,一个用于 443,这是正确的。 80 的侦听器已正确设置,以按预期通过 HTTP 转发到后端 (Nginx) 端口 80。 443 侦听器被错误地配置为通过 HTTPS 发送到后端的端口 80。我更新了 443 监听器以使用与 80 监听器相同的规则(即在 443 上监听但通过 HTTP 发送到后端 80)并且它有效。无视你们。

    【讨论】:

    • 谢谢!这很令人困惑 - 我们需要设置 目标组 使用 HTTP 监听 443。
    • 噢!负载平衡器处的 SSL 终止。我花了更长的时间来解决这个问题谢谢!
    猜你喜欢
    • 2018-04-23
    • 2017-01-04
    • 2017-02-05
    • 2018-09-07
    • 2022-01-22
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 2017-06-29
    相关资源
    最近更新 更多