wss не работает в https, но ws работает в http apache2 ubuntu

Моя настройка веб-сокета работает в http. Но если я включу ssl (позволяет шифрование) и изменю ws: // на wss: // , браузер выдаст эту ошибку.

WebSocket connection to 'wss://xx.yy.xx.yy:5001/' failed: Error in connection establishment: net::ERR_CONNECTION_CLOSED

Javascript:

var ws = new WebSocket('wss://xx.yy.xx.yy:5001');

Затем я включил эти модули apache: proxy_http , proxy_wstunnel , proxy_balancer

И добавили эти строки в / etc / apache2 / sites-enabled / 000-default-le- ssl.conf

<IfModule mod_proxy.c>
ProxyPass / ws://xx.yy.xx.yy:5001
ProxyPassReverse / ws://xx.yy.xx.yy:5001
</IfModule>

Получена ошибка сервера 500.

Хотя я понятия не имел, как работает этот прокси, просто попробовал вслепую. Пожалуйста, исправьте мою ошибку, помогите мне это исправить. Спасибо.

Сведения о сервере:

  • Apache 2.4.18, работающий в экземпляре AWS EC2 ubuntu.
  • общедоступный IP: xx.yy.xx.yy
  • частный IP: aa.bb.aa.bb

Настройка Websocket:

Я использую частный IP-адрес для внутреннего (php) соединения и общедоступный IP-адрес во внешнем интерфейсе.

1
задан 29 June 2018 в 09:29
1 ответ

Ну, я сам исправил. Я изменил свой javascript на:

var ws = new WebSocket('wss://domain.com/ws/');

Включенные прокси-модули, выполнив следующую команду в терминале,

sudo a2enmod proxy proxy_balancer proxy_wstunnel proxy_http

Добавил эти строки в мой файл конфигурации виртуального хоста Apache ( / etc / apache2 / sites-enabled / 000-default-le -ssl.conf )

ProxyRequests Off
ProxyPass "/ws/"  "ws://domain.com:5001/"

Перезапуск службы apache. И веб-сокет начал работать по https.

2
ответ дан 3 December 2019 в 20:13

Теги

Похожие вопросы