【发布时间】:2019-08-21 06:34:56
【问题描述】:
我有一个在 http://example.com:5000/ 上运行的 web 应用程序
网站尝试建立与该服务器的 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 and Apache proxy : how to configure mod_proxy_wstunnel?
【问题讨论】: