1
为Socket.IO 1.0配置Apache 2.4 mod_proxy_wstunnel
我正在尝试配置Apache 2.4,以使用mod_proxy_wstunnel将socket.io的websocket连接代理到node.js websocket服务器。我们可以在socket.io 0.9上正常工作,但是在1.0版本中,他们将套接字端点更改为查询参数,现在我在使用正确的代理指令配置apache时遇到了麻烦。 的所有请求/socket.io/?EIO=N&transport=websocket(其中N是任意数字,通常为2)都需要转发给ws://localhost:8082/socket.io/,但是所有其他请求都需要转发给http://localhost:8082/socket.io/。 我已经尝试了以下两个配置的变体: ProxyPass /socket.io/?EIO=2&transport=websocket http://localhost:8082/socket.io/?EIO=2&transport=websocket ProxyPassReverse /socket.io/?EIO=2&transport=websocket http://localhost:8082/socket.io/?EIO=2&transport=websocket ProxyPass /socket.io/ http://localhost:8082/socket.io/ ProxyPassReverse /socket.io/ http://localhost:8082/socket.io/ 。 RewriteRule /socket.io/?EIO=([0-9]+)&transport=websocket ws://localhost:8082/socket.io/ [QSA,P] ProxyPass /socket.io/ http://localhost:8082/socket.io/ ProxyPassReverse /socket.io/ http://localhost:8082/socket.io/ 我从谷歌搜索中了解到ProxyPass和Locations无法定位查询字符串,因此这里还有其他选择吗?这些路径被硬编码到socket.io中,因此如果没有分叉整个库,我就无法更改它们。