Отключение WebSockets с Opera VPN - PullRequest
0 голосов
/ 04 июля 2018

У меня есть чат на основе websocket / nodejs, который хорошо работает с Chrome / Firefox / Edge / Opera (встроенный vpn отключен).

Однако, когда я включаю встроенный VPN в Opera, я случайно отключаюсь. Обычно это происходит через 10 секунд, независимо от того, отправляю я сообщение или нет. Если я отправляю сообщения, все они проходят хорошо до отключения через 10 секунд или около того. Отключение происходит даже без каких-либо сообщений.

Не уверен, что это может быть связано, но я использую nodejs за прокси-сервером Apache, настроенным следующим образом (HTTP за 8081, WSS за 8080, все инкапсулировано в 443):

<VirtualHost MY_IP:443>
     ServerName www.mydomain.com

     SSLProxyEngine On

     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined

     SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
     Include /etc/letsencrypt/options-ssl-apache.conf

     RewriteEngine On
     RewriteCond %{HTTP:Upgrade} =websocket [NC]
     RewriteRule /(.*)           wss://localhost:8080/$1 [P,L]

     ProxyPass / http://localhost:8081/
     ProxyPassReverse / http://localhost:8081/
</VirtualHost>
<VirtualHost localhost:8081>
     DocumentRoot /var/www/www.mydomain.com/
</VirtualHost>

Я застрял, так как не вижу сообщений об ошибках на клиенте или сервере.

1 Ответ

0 голосов
/ 13 июня 2019

В моем случае я обнаружил, что в некоторых запросах отсутствует несколько заголовков, например, Connection: Upgrade и Upgrade: websocket. Такое чувство, что либо клиент WebSocket в браузере Opera неисправен, поскольку эти 2 заголовка не отправлены, либо прокси-сервер Opera, вероятно, понизил безопасный запрос клиента Websocket , расшифровывает и отбрасывает некоторые заголовки, потому что другие заголовки рукопожатия Websocket, такие как Sec-WebSocket-* остаются нетронутыми.

Я не знаю точно, в вашем случае, возможно, вы должны увидеть свои журналы и посмотреть заголовки, полученные на сервере. Когда я смотрю на журнал балансировщика нагрузки, в котором есть эта проблема, почему-то большинство зарегистрированных пользовательских агентов - опера на мобильном устройстве, в настольной операционной системе с vpn, где оно успешно подключено, но бывают случаи, когда это не удается.

...