当我在运行Nginx的EC2实例前使用AWS Elastic Load Balancer (应用程序类型)时,我遇到了HTTPS请求的“502坏网关”问题。Nginx在每个实例上充当反向代理,为python应用程序(金字塔框架)提供服务的女服务员服务器。我尝试在ELB使用TLS终止,以便EC2实例只处理HTTP。下面是粗略的设置:
客户端HTTPS请求> ELB (监听443,后端转发到80 )> Nginx监听80端口(在Ec2实例上)>转发到服务员/金字塔(在同一个ec2实例上)
当我在HTTPS上发出请求时,我得到502错误。然而,当我发出常规的HTTP请求时,我得到了一个预期的响应(除了ELB正在侦听端口80之外,与上面的设置相同)。
一些附加信息: ELB运行状况检查正在进行中。所有VPC/安全组都配置正确(我相信)。我在ELB上使用AWS证书,使用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;
}
}
}发布于 2018-05-02 00:42:43
好的,我想出来了(我是个笨蛋)。我在ELB上设置了两个监听器,一个用于80,另一个用于443,这是正确的。80的侦听器已正确设置为按预期通过HTTP转发到后端(Nginx)端口80。443侦听器被错误地配置为通过HTTPS发送到后端的端口80。我更新了443监听器,使其使用与80监听器相同的规则(即,监听443,但通过HTTP发送到后端80 ),它起作用了。无视你们所有人。
https://stackoverflow.com/questions/50119152
复制相似问题