无法使用apache代理设置加载socket.io.js

时间:2013-01-21 19:00:43

标签: apache node.js socket.io reverse-proxy

我觉得这个问题可能是重复的,但是我检查过的所有类似线程仍无法找到答案。

我有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响应。

有人有这个问题吗?或者可以链接我一个答案? :)

干杯!

1 个答案:

答案 0 :(得分:0)

在serverfault查看此问题和所有答案:Configuring Apache2 to proxy WebSocket?

问题是mod_proxy不支持WebSockets,只是使它成为HTTP请求。您可以使用不同的端口并避免代理,切换到Nginx,尝试haproxy或使用各种其他Apache模块替代方案。例如,mod_proxy_wstunnel基本上是mod_proxy,支持WebSockets。有关所有解决方案的详细信息,请参阅上面的serverfault链接。