Node.js和Apache:连接问题

时间:2013-02-18 18:17:55

标签: node.js centos socket.io

我在CentOS服务器上安装了带有Socket.io的Node.js,该服务器在端口80上运行Apache。 我创建了一个套接字测试,它只是侦听端口8080.

如果我从服务器的shell中卷曲地址localhost:8080,我会收到Socket.io-welcome消息。如果我有这样的一行:

<script src="http://localhost:8080/socket.io/socket.io.js"></script>

然后浏览器找不到该文件。

“解决方案”是将/nodejs/的请求代理到http://localhost:8080/,但此解决方案无法使用很长时间。

安装Apache时是否可以运行Node.js服务器?我们必须更改哪些设置才能访问网址:http://server.com:8080?似乎Node.js只接受来自localhost的连接。

1 个答案:

答案 0 :(得分:1)

问题很可能出在你的node.js程序中。 它应该在0.0.0.0而不是127.0.0.1上进行聆听。

所以,你有这样的地方:

.listen(8080, '127.0.0.1'); // '127.0.0.1' or 'localhost'

您应将其更改为:

.listen(8080); // or 0.0.0.0

如果Apache也使用端口8080,那么它只会发生干扰,但如果是这种情况,你应该在启动节点应用时遇到错误。

此外,如果您在浏览器中连接到http://localhost,它将仅在服务器与浏览器位于同一本地计算机上时才有效。很好,测试我猜。

如果您有托管服务器,则必须连接到域或IP地址,否则浏览器无法找到它。

更新: 您的socket.io代码也需要正确连接:

var socket = io.connect('http://correct.server.com:8080'); // not localhost

并且您的浏览器需要从正确的位置加载javascript文件:

<script src="http://correct.server.com/socket.io/socket.io.js"></script> // not localhost

这可能有助于防火墙/负载均衡器问题:

https://github.com/LearnBoost/socket.io/wiki/Socket.IO-and-firewall-software