Безопасное подключение через веб-сокет на HTTPS, только сервер apache / nginx через Plesk? - PullRequest
0 голосов
/ 18 марта 2019

Большую часть дня потратили на поиски решения, но пришли с пустыми руками.

Если я запускаю свой сайт по HTTP, соединение ws работает отлично:

this.conn = new WebSocket('ws://example.com:8080');
this.conn.onopen = () => {};

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

Поэтому я изменяю соединение JS на:

this.conn = new WebSocket('wss://example.com:8080');
this.conn.onopen = () => {};

Теперь соединение wss на некоторое время зависает (в ожидании), наконец, браузер возвращает:

WebSocket connection to 'wss://example.com:8080/' failed: WebSocket opening handshake timed out

Я понимаю, почему это происходит, так как я не настроил порт 8080 для обработки wss, но я тут потерян.

Я запускаю Plesk Onyx 17.8.11 на сервере, и я сделал следующее (прочитав столько, сколько смог найти по теме):

Включено proxy_wstunnel через Инструменты и настройки> Веб-сервер Apache> Модули Apache

Добавлены следующие строки в Веб-сайты и домены> Настройки Apache & nginx> Дополнительные директивы для HTTP и Дополнительные директивы для HTTPS:

ProxyPass / ws://example.com:8080
ProxyPassReverse / ws://example.com:8080

Но это полностью нарушает Apache (ошибка 500).

Изменение на:

ProxyPass /ws ws://example.com:8080
ProxyPassReverse /ws ws://example.com:8080

А затем изменить вызов JS на:

this.conn = new WebSocket('wss://example.com:8080/ws');

Приводит к той же ошибке рукопожатия, что и раньше.

Кто-нибудь знает, как настроить безопасные веб-сокеты с помощью Plesk? Я нашел кучу статей и постов, в которых рассказывается об изменении файлов конфигурации apache напрямую, но Plesk это совсем не нравится, поэтому решение с Plesk - это то, что мне действительно нужно. Похоже, что они игнорировали другие запросы пользователей Plesk на их собственном форуме, задающие тот же вопрос, поэтому я и задаю SO гуру;)

...