Невозможно получить соединение с веб-сокетом, работающее с балансировщиком нагрузки приложения ec2 +

У меня есть балансировщик нагрузки приложений aws с прослушивателем https на порту 9999, перенаправляющим в группу на порту 9999 с экземпляром ec2 в качестве цели.

Если я запустил свой сервер websocket с именем хоста, настроенным для моего домена api.example.com , то когда клиент попытается открыть соединение websocket, он получит:

Ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 502

Однако, если я сконфигурирую свой сервер websocket с пустой строкой вместо домена, тогда он соединится с нормально !

Это проблематично, потому что сервер, который я собираюсь использовать run на этом экземпляре автоматически запускает сервер websocket ТОЛЬКО ЕСЛИ предоставлена ​​конфигурация имени хоста websocket, поэтому пустая строка означает, что сервер websocket никогда не запустится! Я бы предпочел не взламывать библиотеку, чтобы обойти это условие. Поэтому мне интересно, почему в мире пустая строка работает, а имя домена - нет?

Я пробовал localhost, IP-адрес коробки и т. д., все приводит к 502, кроме пустой строки!

1
задан 27 June 2018 в 07:37
2 ответа

Моя проблема была решена путем установки моего хоста сервера websocket на 0.0.0.0

0
ответ дан 3 December 2019 в 23:15

ALB не использует имя хоста для проверки работоспособности. Таким образом, если ваш сервер не поддерживает запросы без имен хостов, проверка работоспособности завершится неудачно, что приведет к ошибкам 5xx при доступе к ALB.

  • Проверьте целевую группу, которую использует ALB, на наличие ошибок проверки работоспособности
  • Проверьте сервер приложений журналы ошибок, связанных с проверкой работоспособности

Если ваш сервер не поддерживает это, у вас есть два варианта:

  • Использовать прокси (например, nginx) на вашем сервере, который может обрабатывать запросы без имени хоста, и решать проблему там
  • Переопределите порт проверки работоспособности ALB, перенаправив его на то, что все время возвращает HTTP 200 (например, Apache, работающий на том же хосте, но на другом порту).
1
ответ дан 3 December 2019 в 23:15

Теги

Похожие вопросы