无法从 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);
我可以从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
连接时。
我在这里缺少什么?我该怎么办?是因为窗户吗?还是什么?
感谢您对此的任何帮助。
【问题讨论】:
尝试改变... ).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 服务器的主要内容,如果未能解决你的问题,请参考以下文章