У меня есть балансировщик нагрузки приложений aws с прослушивателем https на порту 9999, перенаправляющим в группу на порту 9999 с экземпляром ec2 в качестве цели.
Если я запустил свой сервер websocket с именем хоста, настроенным для моего домена api.example.com
, то когда клиент попытается открыть соединение websocket, он получит:
Ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 502
Однако, если я сконфигурирую свой сервер websocket с пустой строкой вместо домена, тогда он соединится с нормально !
Это проблематично, потому что сервер, который я собираюсь использовать run на этом экземпляре автоматически запускает сервер websocket ТОЛЬКО ЕСЛИ предоставлена конфигурация имени хоста websocket, поэтому пустая строка означает, что сервер websocket никогда не запустится! Я бы предпочел не взламывать библиотеку, чтобы обойти это условие. Поэтому мне интересно, почему в мире пустая строка работает, а имя домена - нет?
Я пробовал localhost, IP-адрес коробки и т. д., все приводит к 502, кроме пустой строки!
ALB не использует имя хоста для проверки работоспособности. Таким образом, если ваш сервер не поддерживает запросы без имен хостов, проверка работоспособности завершится неудачно, что приведет к ошибкам 5xx при доступе к ALB.
Если ваш сервер не поддерживает это, у вас есть два варианта: