2

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

我有虚拟主机设置代理 /node/ 请求到 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 响应。

有人遇到过这个问题吗?或者可以将我链接到答案?:)

干杯!

4

1 回答 1

0

查看这个问题以及 serverfault 中的所有答案:Configuring Apache2 to proxy WebSocket? .

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

于 2014-01-09T03:10:22.540 回答