我是NodeJs的新手。我在本地开发系统中启动了一个简单的node.js服务器,如下所示:
var http = require('http');
var fs = require('fs');
var server = http.createServer( function (req, res) {
console.log(req.url);
res.end();
}).listen(8000);
我可以从localhost
,127.0.0.1
和192.168.1.103
访问服务器,但是当我尝试从公共IP地址84.47.***.**
访问服务器时,我只能获得是:
超时
过去2小时我一直在阅读有关此内容的帖子,并且只是说将主机设置为0.0.0.0
,如果没有提供,则为node.js的默认主机。
我可以ping我的公共IP并获得当前结果。
我在Windows 8.1上,Windows防火墙是off
我在comodo防火墙中定义了自定义允许规则,以确保甚至禁用了comodo防火墙。
当我检查node.js正在监听0.0.0.0:8000
和:::8000
(我认为是IPv6)TCP
连接时。
我在这里缺少什么?我该怎么办?是因为窗户?或者什么?
感谢您的任何帮助。
答案 0 :(得分:1)
您如何连接互联网?你有路由器吗?如果您有路由器,则需要将其配置为从外部IP和端口转发到PC的本地IP和端口。在节点服务器中,您需要侦听本地IP(在此IP路由器上将转发请求)。如果您没有路由器,则需要使用公共IP来侦听网卡。
答案 1 :(得分:0)
好的想出了我的自己,与nodejs本身无关(whoooops)。由于我首先在路由器后面,我不得不在我的路由器中设置端口转发。然后我甚至在防火墙中定义了一个规则来允许nodejs的传入连接,但它仍然阻止了传入的连接,因此我必须在Global Rules
中定义一个规则以允许我所需端口的传入连接。