【问题标题】:NodeJs server is not accessible from internet无法从 Internet 访问 NodeJs 服务器
【发布时间】: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

标签: node.js windows server


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 2014-07-03
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多