2

我在我的服务器上运行 Apache。转到我的地址 xxxx:port 会在 /var/www 中加载 index.html 页面。当我停止服务器时,我无法再连接(一切都很好)。

现在我启动节点服务器node server.js(下面的 server.js 文件也位于 /var/www 中)。

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(port, 'x.x.x.x');
console.log('Server running at http://x.x.x.x:port/');

这给出了错误listen EADDRNOTAVAIL,但我没有运行任何其他节点服务器(此端口上没有运行其他进程)。

我也试过省略 IP 地址,只听:listen(port);

这不会返回任何错误,但我无法连接到服务器(浏览器说Firefox can't establish a connection to the server at x.x.x.x:p.:)

4

3 回答 3

3

我发现了问题。您无需指定主机名:

listen(port, 'x.x.x.x')

应该只是

listen(port)

否则服务器将不接受任何连接,除了指向指定 IP 的连接。

于 2013-09-17T22:39:08.980 回答
2

端口正在使用或不可用。尝试不同的端口,例如:

listen(88, 'x.x.x.x');

看看是否连接。另外,请确保 xxxx 实际上是您服务器的 IP 地址。您可以通过以下方式监听所有 IP:

listen(88, '0.0.0.0');

或者完全离开 host/ip 部分。如果它确实连接到另一个端口,您只需要找到正在使用您想要的端口的东西。如果是 80 端口,请使用:

sudo netstat -tulpn | grep :80

使用该端口获取程序。

于 2013-09-17T14:22:19.927 回答
0

听起来端口已锁定并正在使用中..

以下命令将为您提供正在运行的节点进程列表。

ps | grep node

要释放该端口,请使用以下命令停止进程。

kill <processId>
于 2013-09-17T14:11:02.443 回答