我在本地网络上有一台服务器(10.0.0.12
)和我的笔记本电脑(10.0.0.2
)。
当我在服务器上运行curl http://10.0.0.2:3000
时,它运行正常。当我在笔记本电脑上运行curl http://10.0.0.12:3000
时,无法说网站不可用。
我可以通过笔记本电脑ping和ssh进入服务器。
以下是完成连接的代码:
app.set('port', (3000));
app.listen(app.get('port'), function(){
console.log("Node app running on localhost:" + app.get('port'));
}
我尝试将ip地址传递给listen()
函数,但没有区别。我尝试传递10.0.0.12
(服务器的IP地址),127.0.0.1
和0.0.0.0
都具有相同的结果。
如何在本地网络上托管我的节点应用程序,并让本地网络上的每个人都能够通过浏览器访问它?
编辑:我在CentOS 7上运行。 EDIT2:当我运行netstat -lnt
时,它会说:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
答案 0 :(得分:0)
您是否尝试过省略IP地址?然后,它应该在运行它的机器的IP地址和指定的端口上可用。
答案 1 :(得分:0)
根据医管局的建议。删除IP。
从文档中可以看出: https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback 如果省略主机名,则服务器将接受指向任何IPv4地址(INADDR_ANY)的连接。
P.S。哪个是服务器上的操作系统?
答案 2 :(得分:0)
也许你可以试试:
app.listen(3000, '0.0.0.0', function(){
console.log("Node app running on 0.0.0.0:3000");
}
答案 3 :(得分:0)
可能的问题可能是您没有使用http模块?
var http = require('http').Server(app);
http.listen(3000, function () {
console.log('App running on port 3000');
});
一个好的做法是将端口设置为
app.set('port', (3000));
var http = require('http').Server(app);
http.listen(app.get('port'), function () {
console.log('App running on port ' + app.get('port'));
});