Как получить веб-сокеты более 80/443 с http / https - PullRequest
0 голосов
/ 30 марта 2019

У меня есть сервер, на котором я запускаю веб-сайт, приложение и сервер NodeJS, чтобы поддерживать мою связь через веб-сокет через socketIO.

Я следовал этому руководству [https://xpo6.com/socket-io-via-apache-reverse-proxy], с тем чтобы мои веб-сокеты были доступны через порт 80/443, а не через порт 3000, который прослушивает сервер NodeJS. Мне это нужно, поскольку я обнаружил, что на компьютерах, на которых мне нужно запустить приложение, порт 3000 заблокирован.

У меня успешно работает var socket = io.connect('http://yourpublicDomain.com/'); со страниц моего веб-приложения, так как страница загружается без ошибок и, по-видимому, подключается к NodeJS. Тем не менее, мое настоящее общение через веб-сокет в какой-то момент сбивается.

  1. Веб-сервер NodeJS протестирован и работает, обслуживая запросы через порт 3000.
  2. Страницы Webapp могут корректно загружать страницы без ошибок.
  3. Localhost / держит сайт
  4. Localhost / webapp содержит веб-приложение
  5. Localhost / webapp / node - это то место, где установлен NodeJS, а мой JS запускается.

Вот изменения, которые я внес в 000-default-le-ssl.conf, как описано в руководстве:

RewriteEngine   on
RewriteCond     %{REQUEST_URI}  ^/socket.io     [NC]
RewriteCond     %{QUERY_STRING} transport=websocket     [NC]
RewriteRule     /(.*)   ws://myIP:3000/$1     [P,L]

SSLProxyEngine  on
ProxyPass /webapp https://myIP:3000
ProxyPassReverse /webapp https://myIP:3000

ProxyPass /socket.io https://myIP:3000/socket.io
ProxyPassReverse /socket.io https://myIP:3000/socket.io

Может кто-нибудь сказать мне, почему сообщения websocket не возвращаются на сервер NodeJS после следования руководству, тогда как к ним обращались по локальному хосту: 3000 из сети с 3000 открытых.

Спасибо, выдернула мои волосы!

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