当前位置: 首页 > 知识库问答 >
问题:

如何使用Elastic Load Balancer和EC2/Nginx为HTTPS请求解决502 Bad Gateway错误?

戈宏义
2023-03-14

在运行 Nginx 的 EC2 实例之前使用 AWS 弹性负载均衡器(应用程序类型)时,我遇到了 HTTPS 请求的“502 错误网关”问题。Nginx在每个实例上充当服务员服务器的反向代理,为python应用程序(金字塔框架)提供服务。我正在尝试在 ELB 上使用 TLS 终止,以便 EC2 实例仅处理 HTTP。以下是粗略的设置:

客户端HTTPS请求

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

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

这是nginx。EC2实例上的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;

        }
    }
}

共有1个答案

淳于枫
2023-03-14

好吧,我想通了(我是个傻瓜)。我在ELB上设置了两个听众,一个是80,一个是443,这是正确的。已正确设置 80 的侦听器,以便按预期通过 HTTP 转发到后端 (Nginx) 端口 80。443 侦听器被错误地配置为通过 HTTPS 发送到后端的端口 80。我更新了443侦听器以使用与80侦听器相同的规则(即侦听443,但通过HTTP发送到后端80),并且它起作用了。不要理会你们所有人。

 类似资料:
  • 这是报错信息: 然后反向代理是这样配置的: 尝试过的方法: 开启ssl,这样能校验成功,装载后也用不了 请问大佬怎么处理,现在我不要开启ssl,http访问即可

  • 问题内容: 说我想以编程方式获取。目前,golang.org(ssl)的证书不正确,因此我将其签发给So: 我得到了(如我所料) 现在,我想自己信任该证书(想象一个可以颁发指纹的自我发行的证书,等等):如何提出请求并验证/信任该证书? 我可能需要使用openssl下载证书,将其加载到我的文件中并填充struct!?。 问题答案: 安全说明:禁用安全检查是危险的,应避免 您可以全局禁用默认客户端的所

  • 本文向大家介绍使用AngularJS 跨站请求如何解决jsonp请求问题,包括了使用AngularJS 跨站请求如何解决jsonp请求问题的使用技巧和注意事项,需要的朋友参考一下 今天写东西的时候遇到了 一种情况 ,因为用的不是自己公司人员写的接口 ,而我要写的东西是抓别的网页上的接口 所以出现了 一下这种情况 用 get请求出现拦截跨站请求资源  以下是解决办法, 这是我的请求: 我在浏览器模板

  • 已完成休耕步骤,但如您所见,将出现休耕错误:

  • 问题内容: 我已经开发了一个PHP网络应用程序。我给用户一个选项,可以一次更新多个问题。这样做时,有时用户会遇到此错误。有什么办法可以增加Apache中URL的长度? 问题答案: 在Apache下,该限制是可配置的值 。如果要支持更长的请求URI,请将此值更改为大于其默认值8190的值。该值在 /etc/apache2/apache2.conf中 。如果不是,请在下添加新行()。 但是,请注意,如

  • 我是反应性编程的新手,我正在使用Spring WebFlux的WebClient向下面的URL发出POST请求,作为Spring Boot应用程序的一部分,将现有的测验分配给候选人。我很难理解我在构造WebClient请求时做错了什么。 终点 quizrequest.java java FlexiQuizClient.java 在我的资源类(控制器)中,我调用web客户端方法,如下所示: 示例响应