如何使用http / https获取超过80/443的websocket

时间:2019-03-30 12:06:13

标签: node.js websocket proxy apache2

我有一台运行网站,应用程序和NodeJS服务器的服务器,以通过socketIO支持我的网络套接字通信。

我遵循了本指南[https://xpo6.com/socket-io-via-apache-reverse-proxy],以期我的websocket comms可通过端口80/443(而不是NodeJS服务器监听的端口3000)使用。我之所以需要它,是因为发现运行该应用程序所需的计算机大多已阻塞了端口3000。

我在我的webapp页面上成功完成了var socket = io.connect('http://yourpublicDomain.com/');的工作,因为该页面加载时没有错误并且似乎已连接到NodeJS。但是,我实际的网络套接字通信在某些时候会误入歧途。

  1. NodeJS Web服务器经过测试,可以在端口3000上运行请求。
  2. Webapp页面可以正确加载页面而不会出错。
  3. Localhost /拥有网站
  4. Localhost / webapp拥有该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服务器,而当它们是从3,000:打开的网络通过localhost:3000访问时。

谢谢,在这里拉我的头发!

0 个答案:

没有答案