Как устранить ошибку 502 Bad Gateway с помощью Elastic Load Balancer и EC2 / Nginx для запросов HTTPS?

У меня возникают проблемы «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 все еще зашифрован? Или какая-то проблема с кодировкой?

Как устранить ошибку 502 Bad Gateway с помощью Elastic Load Balancer и 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;

        }
    }
}
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
13
0
24 295
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, я разобрался (я болван). У меня было два слушателя, настроенных на ELB, один для 80 и один для 443, и это было правильно. Слушатель для 80 был правильно настроен для перенаправления на серверный порт (Nginx) 80 через HTTP, как и ожидалось. Прослушиватель 443 НЕПРАВИЛЬНО настроен для отправки на порт 80 серверной части по HTTPS. Я обновил прослушиватель 443, чтобы использовать то же правило, что и прослушиватель 80 (то есть прослушивать 443, но отправлять на бэкэнд 80 по HTTP), и это сработало. Не обращайте внимания на вас всех.

Спасибо! Это очень сбивает с толку - нам нужно установить целевая группа для прослушивания 443 с использованием HTTP.

Tudmotu 16.05.2018 23:50

Другие вопросы по теме