我在服务器上运行Apache。转到我的地址x.x.x.x: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.
)
答案 0 :(得分:3)
我发现了问题。您无需指定主机名:
listen(port, 'x.x.x.x')
应该只是
listen(port)
否则服务器将不接受任何连接,除了指向指定ip的连接。
答案 1 :(得分:2)
该端口正在使用或不可用。尝试使用不同的端口:
listen(88, 'x.x.x.x');
并查看是否连接。另外,请确保x.x.x.x实际上是服务器的IP地址。您可以通过以下方式收听所有IP:
listen(88, '0.0.0.0');
或完全退出host / ip部分。如果它确实在另一个端口上连接,您只需要查找正在使用所需端口的内容。如果是端口80,请使用:
sudo netstat -tulpn | grep :80
使用该端口获取程序。
答案 2 :(得分:0)
听起来这个端口被锁定并正在使用..
以下命令将为您提供正在运行的节点进程列表。
ps | grep node
要释放该端口,请使用以下命令停止该过程。
kill <processId>