无法从 Internet 访问 NodeJs 服务器

Posted

技术标签:

【中文标题】无法从 Internet 访问 NodeJs 服务器【英文标题】:NodeJs server is not accessible from internet 【发布时间】:2016-07-15 10:17:21 【问题描述】:

我是 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);

我可以从localhost127.0.0.1192.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 连接时。

我在这里缺少什么?我该怎么办?是因为窗户吗?还是什么?

感谢您对此的任何帮助。

【问题讨论】:

尝试改变... ).listen(8000); .......... to ).listen("0.0.0.0",8000); @damitj07 ip 是第二个参数,0.0.0.0 是默认值。已经尝试过listen(8000,'0.0.0.0')。并且您的建议不正确并给出错误Error: listen EACCES 0.0.0.0 【参考方案1】:

您是如何连接到互联网的?你有没有路由器?如果您有路由器,则需要将其配置为从外部 IP 和端口到 PC 的本地 IP 和端口的端口转发。在节点服务器中,您需要侦听您的本地 IP(在此 IP 路由器上将转发请求)。如果您没有路由器,那么您需要使用您的公共 IP 来监听您的网卡。

【讨论】:

【参考方案2】:

好吧,我自己弄清楚了,与 nodejs 本身无关(哇哦)。因为我首先在路由器后面,所以我必须在我的路由器中设置端口转发。然后即使我在防火墙中定义了一个规则以允许 nodejs 的传入连接,但它仍然阻止传入连接,所以我必须在 Global Rules 中定义一个规则以允许我想要的端口的传入连接。

【讨论】:

以上是关于无法从 Internet 访问 NodeJs 服务器的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS 应用程序无法从 Zuul API 网关访问

无法从 Internet 访问我的 Asp.Net Api

无法通过 Internet 访问 solr Web 界面

NodeJS:无法使用服务帐户访问 Gmail API

如何从同一网络中的另一台计算机访问我的 nodejs-express localhost 服务器?

AWS Fargate 集群无法使用 NAT 和 Internet 网关访问 Internet [关闭]