[英]How to configure Apache to proxy socket.io server
我在http://example.com:5000/上运行了一个webapp
该网站尝试建立与该服务器的socket.io连接,以交换一些时间关键数据(多人游戏)。
到目前为止一切正常......
现在我正在努力让整个生产准备就绪,所以我想在一个更好的URL上提供它: https : //myapp.example.com/
为此,我按如下方式配置我的Apache服务器:
ProxyPass / http://0.0.0.0:5000/
ProxyPassReverse / http://0.0.0.0:5000/
乍一看,一切似乎都有效 - 但socket.io无法再从轮询切换到websocket。
Javascript控制台显示此错误:
socket.io.js:8 WebSocket connection to 'wss://myadpp.example.com/socket.io/?EIO=3&transport=websocket&sid=0bef58d5622f4d20b4c1d7f29c97a21d' failed: Error during WebSocket handshake: Unexpected response code: 200
这似乎是一个非常常见的设置 - 隐藏基于socket.io的webapp在apache代理后面 - 但我找不到任何在线工作的解决方案。
似乎apache不能代理ws://连接,但我不知道该怎么做..
在这里找到解决方案: WebSockets和Apache代理:如何配置mod_proxy_wstunnel?
尝试加载mod_proxy_wstunnel模块: https : //httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html
编辑:
对于你的第二个问题尝试这个:
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://0.0.0.0:5000/$1 [P,L]
RewriteCond %{QUERY_STRING} transport=polling [NC]
RewriteRule /(.*) http://0.0.0.0:5000/$1 [P,L]
ProxyPass / http://0.0.0.0:5000/
ProxyPassReverse / http://0.0.0.0:5000/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.