Возможно ли прокси соединение wss socket.io с ws, используя Apache? - PullRequest
0 голосов
/ 20 марта 2020

TLDR: Проксирование socket.io с Apache приводит к этой ошибке клиента: main-es2015.a5a3463e1d800651eb18.js:1 WebSocket connection to 'wss://www.company.com/nodeapp/socket.io/?EIO=3&transport=websocket&sid=cqYNnGKUb-BhjA0dAAAH' failed: Error during WebSocket handshake: Unexpected response code: 400

Я проксирую сервер узла, используя Apache, и приложение узла действует в качестве API и сервера socket.io. Я должен прокси, потому что наш домен (притворяется, что он www.company.com) указывает на настройку apache, и мне нужно www.company.com/nodeapp для доступа к серверу узлов в качестве отдельного сайта.

Проксирование API в порядке со следующим:

RewriteRule ^/nodeapp$ /nodeapp/ [R]
<Location /nodeapp/>
    ProxyPass http://localhost:3021/
    ProxyPassReverse http://localhost:3021/
</Location>

Таким образом, сервер узла, как и socket.io, не работает https, а просто http.

Мой сбойный прокси для socket.io:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/nodeapp /socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket     [NC]
RewriteRule /(.*)           ws://localhost:3021/$1  [P,L]
ProxyPass        /nodeapp /socket.io http://localhost:3021/socket.io
ProxyPassReverse /nodeapp /socket.io http://localhost:3021/socket.io

В моем приложении узла я получаю соединение от клиента (я вижу это в обратном вызове connection), но ошибка выше это все, с чем меня приветствуют на клиенте, и я уверен, что это связано с моей конфигурацией прокси. Что я пропускаю / делаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...