2013-04-09 9 views
28

Я пытаюсь настроить websocket-сервер с socket.io на AWS Elastic Beanstalk. Есть первоначальный запрос на /socket.io/1/?t=xxxx и работает, но WebSocket рукопожатия терпит неудачу с этой ошибкой:Websockets with socket.io на AWS Elastic Beanstalk

WebSocket connection to 'ws://xxxxxx.elasticbeanstalk.com/socket.io/1/websocket/a4DTCN2BeJZuiSaphVyz' failed: Unexpected response code: 502 

С и прибегая к помощи глядя на ошибку 502 (Bad Gateway), кажется, имеют какое-то отношение к nginx-прокси. Итак, как мне настроить nginx для работы с websockets?

Не удалось найти что-либо в документации AWS о настройке для websockets.

+3

Получил это, изменив прокси-сервер от nginx до none. – funparko

+1

Я также видел ту же отчетность об ошибках (ужасно) «Ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 400» – Jason

ответ

26

вы можете попытаться решить проблему настройки nginx, но если вы используете только веб-порты, было бы проще отключить все прокси и напрямую подключиться.

Это находится под окружением вашего приложения в приборной панели эластичного бобового стебля. На правой кнопке есть надпись «Действия». Выберите "Правка/Load Configuration"

enter image description here

+5

Начиная с 2014-04-13 это расположено под: <Имя приложения>/<Имя среды>/Конфигурация/Конфигурация программного обеспечения/Опции контейнера. – Rob

+0

«Легче» также означает лучше? Например, что вы получаете, установив прокси-сервер на nginx (помимо статических сопоставлений файлов и сжатия gzip, оба из которых мне не нужны). Как насчет производительности и безопасности? Я подозреваю, что производительность лучше без прокси-сервера. Но как насчет безопасности? Является ли nginx лучше для WSS (WebSockets через SSL/TLS), или я должен просто реализовать [SSL с Node.js] (https://github.com/einaros/ws/blob/master/examples/ssl.js)? Как насчет защиты DoS? Что-нибудь еще? – ma11hew28

+1

У меня прокси-сервер выключен, но я получаю сообщение об ошибке закрыто до его установки, вопрос отправлен здесь: http://stackoverflow.com/questions/26880396/socket-io-error-web-socket-connection- is-closed-before-the-connection-is-installed – user2727195

4

Существует значительный недостаток с отчаянной-Nginx подход. Вам нужно будет переместить https в узел, а также в вызовы socket.io. Гораздо проще управлять https в конфигурации сервера, а не в узле.

Если вам не нужны https, я предлагаю сбросить прокси-сервер и просто перейти непосредственно к узлу.

+6

Это неверно, вы можете добавить сертификат непосредственно на балансировщик нагрузки. –

3

Socket.io по умолчанию - порт 8080. Убедитесь, что порт 80280 включен в вашей группе безопасности EC2, добавив «Входящее> Пользовательское правило TCP» в «Администраторы AWS»> EC2> Группы безопасности.

 Смежные вопросы

  • Нет связанных вопросов^_^