我觉得这个问题可能是重复的,但是我检查过的所有类似线程仍无法找到答案。
我有vhost设置代理/节点/请求到NodeJS / Socket.IO服务器。
ProxyRequests On
ProxyPass /node http://192.168.2.151:1337/
ProxyPassReverse /node http://192.168.2.151:1337/
此设置成功服务于Apache的所有内容,期望请求:http://domain.com/node/ 在NodeJS方面,一切正常。
我无法得到这一行:
<script src="/node/socket.io/socket.io.js"></script>
加载socket.io.js,它总是吐出NodeJS服务器所说的内容。
设置:
index.html由Apache提供服务。 http://domain.com/index.html index.html是带有脚本标记的简单HTML,用于加载socket.io.js(就像我上面写的那样)。 当我请求http://domain.com/index.html脚本加载src但内容是NodeJS服务器响应而不是socket.io.js。
我在运行NodeJS服务器的目录中有'npm install socket.io'。
我也尝试过使用NodeJS提供index.html,无论如何 - socket.io.js内容仍然是NodeJS响应。
有人有这个问题吗?或者可以链接我一个答案? :)
干杯!
答案 0 :(得分:0)
在serverfault查看此问题和所有答案:Configuring Apache2 to proxy WebSocket?。
问题是mod_proxy
不支持WebSockets,只是使它成为HTTP请求。您可以使用不同的端口并避免代理,切换到Nginx,尝试haproxy或使用各种其他Apache模块替代方案。例如,mod_proxy_wstunnel
基本上是mod_proxy
,支持WebSockets。有关所有解决方案的详细信息,请参阅上面的serverfault链接。