繁体   English   中英

如何配置Apache代理socket.io服务器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM