【问题标题】:Cannot load socket.io.js with apache proxy setup无法使用 apache 代理设置加载 socket.io.js
【发布时间】:2013-01-04 21:46:08
【问题描述】:

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

我有 vhost 设置来代理 /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 响应。

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

干杯!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      • 2010-10-17
      • 2011-06-24
      • 1970-01-01
      相关资源
      最近更新 更多