我有一台运行网站,应用程序和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。但是,我实际的网络套接字通信在某些时候会误入歧途。
这是我对指南中所述的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访问时。
谢谢,在这里拉我的头发!