502 Неисправный шлюз на AWS ELB с Nginx + Django + Gunicorn

резюме выпуска: 502 плохой шлюз с ELB и приложение Django за то nginx + Gunicorn на EC2 Среда:

Привет, мне интересно, может ли кто-нибудь помочь. Я уже больше недели бьюсь головой о стену, я попробовал два разных ИИ и просмотрел все, что смог найти здесь и на AWS. У меня есть эластичный балансировщик нагрузки (приложение) и группа автоматического масштабирования. Все настроено в соответствии с лучшими практиками, html и php страницы отображаются нормально. Однако django не передается на общедоступную сторону ELB, он возвращает неверный шлюз 502.

• AWS Elastic Load Balancer (ELB) перед экземпляром EC2 • ELB завершает работу HTTPS и перенаправляет HTTP (порт 80) в Nginx на EC2 • Nginx настроен как обратный прокси-сервер, перенаправляющий запросы /приложения/ к Gunicorn через сокет Unix • SELinux настроен как допустимый • Приложение Django, обслуживаемое Gunicorn, работает на EC2 • Nginx версии 1.28.0, Gunicorn обслуживает приложение Django на Unix-сокете /tmp/gunicorn_.sock • Приложение Django использует виртуальную среду с зависимостями, установленными для каждого сценария развертывания Наблюдаемое поведение: • curl -vk https:///test (простая конечная точка Nginx) корректно возвращает HTTP 200 OK • curl --unix-сокет /tmp/gunicorn_.sock http:///app/ корректно возвращает HTTP 200 OK — Gunicorn + Django работают локально в EC2 • curl -vk https:///app/ возвращает 502 неисправных шлюза из Nginx за ELB • /app (без косой черты) возвращает 301 перенаправление на /app/ • /app/ возвращает 502 сбойных шлюза • Журналы отладки Nginx указывают на попытки подключения к сокету Gunicorn, но прокси-сервер не отвечает успешно • Служба Gunicorn запущена, а права доступа к сокету установлены на 777 (для тестирования) • Нет ошибок при выполнении команд управления Django в виртуальной среде • Сценарий развертывания настраивает virtualenv, устанавливает зависимости, копирует последний код — при запуске не сообщается о пропавших зависимостях. • Конфигурация Nginx проверена на proxy_pass для unix-сокета, но поток ELB → Nginx → Gunicorn приводит к 502

Дополнительная информация: • ELB - это балансировщик нагрузки приложения (ALB), завершающий TLS и переадресацию на порт 80 • Проксирование Nginx через proxy_pass, пробовал http://unix:/tmp/gunicorn_.sock:/; и http://unix:/tmp/gunicorn_.sock; • В командной строке Gunicorn используется --bind unix:/tmp/gunicorn_.sock • Версии Django и Gunicorn обновлены

Я был бы чрезвычайно признателен за любые указания на то, что может быть причиной этого и как это устранить.

Вернуться на верх