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

У меня проблемы с установлением соединения через веб-сокет.У меня есть экземпляр aws ec2, на котором запущен сервер веб-сокетов SSL на поддомене: api.example.com, на порту 9999. Мое клиентское приложение работает на www.example.com, клиент настраивает прослушиватель:

new WebSocket('wss://api.example.com:9999'); 

Это приводит к тому, что браузер дает мне:

net :: ERR_CONNECTION_REFUSED

Так что моя следующая идея была, так как у моего балансировщика нагрузки приложения уже есть прослушиватель httpsустановив порт 443, идущий к моему серверу API, я изменил настройку прослушивателя веб-сокетов на:

new WebSocket('wss://api.example.com/socket');

Затем я сделал свой веб-сервер nodejs (restify) на экземпляре ec2 catch / socket с планами перенаправить его на localhost: 9999 ... Однако я помещаю console.log в конечную точку / socket до перенаправления, и регистрация не происходит - я также пытался wss://api.example.com:443/socket, никажется, достиг конечной точки в моем веб-сервере.

Тем не менее, если я использую curl, он прекрасно работает:

~>curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: api.example.com" -H "Origin: https://www.example.com" https://api.example.com/socket
HTTP/2 301
date: Tue, 26 Jun 2018 02:27:07 GMT
content-type: application/json
content-length: 4
location: https://localhost:9999/localhost
server: restify
access-control-allow-origin: https://www.example.com
vary: origin
access-control-expose-headers: api-version, content-length, content-md5, content-type, date, request-id, response-time

хотя https://localhost:9999/localhost кажется немного странным - но независимо от того, когда я используюзавиток, он попадает в конечную точкуи я вижу журнал.

...