Я сталкиваюсь с проблемами «502 Bad Gateway» для запросов HTTPS при использовании AWS Elastic Load Balancer (тип приложения) перед экземплярами EC2, на которых работает Nginx. Nginx действует как обратный прокси-сервер в каждом экземпляре для официантского сервера, обслуживающего приложение Python (платформа Pyramid). Я пытаюсь использовать завершение TLS на ELB, чтобы экземпляры EC2 имели дело только с HTTP. Вот грубая настройка:
Клиентский HTTPS-запрос> ELB (прослушивание на 443, переадресация на 80 на бэкэнде)> Nginx, прослушивающий порт 80 (на экземпляре Ec2)> перенаправлен на официантку / пирамиду (на тот же экземпляр ec2)
Когда я делаю запросы по HTTPS, я получаю ошибку 502. Однако, когда я делаю регулярные запросы HTTP, я получаю ответ, как и ожидалось (та же настройка, что и выше, за исключением того, что ELB прослушивает порт 80).
Некоторая дополнительная информация:
Проверки здоровья ELB работают.
Все группы VPC / Security настроены правильно (я считаю).
Я использую сертификат AWS на ELB, используя стандартную настройку / пошаговое руководство на AWS.
Я зашёл SSH в экземпляр Ec2 и в журнале доступа Nginx похоже, что HTTPS-запрос всё ещё зашифрован? Или какая-то проблема с кодировкой?
А вот nginx.conf для экземпляра EC2:
#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;
}
}
}