【问题标题】:Unable to get to node.js externally无法从外部访问 node.js
【发布时间】:2012-01-30 10:44:04
【问题描述】:

我到处寻找答案,但没有任何运气。

我已经在我的服务器上安装了 node.js。我创建了标准的“Hello World”示例,例如:

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8080, "0.0.0.0");

console.log('Server running at http://0.0.0.0:8080/');

在服务器上运行脚本后:

node app.js

我可以在内部连接到端口 808 并看到 Hello World 消息,但是当我尝试从外部连接到我的服务器的端口 8080 时,我收到“无法连接到服务器”错误。我也在我的监听函数中试过这个:

etc..
}).listen(8080, "204.xxx.xxx.xxx");

(使用我的真实外部 IP 地址)并且没有任何运气。

我已尝试通过将其添加到 iptables 来接受 8080 上的连接:

iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

但还是碰壁了。当我运行 netstat 时,我得到:

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -               

我认为这告诉我端口 8080 正在侦听连接。

那么——我在这里做错了什么?

【问题讨论】:

  • 操作系统防火墙软件怎么样?

标签: linux node.js external iptables


【解决方案1】:

您很可能在网络地址转换 (NAT) 之后。

如果您使用的是普通的家庭互联网连接并且您有网关路由器,那么您可以有多个设备使用您家的互联网连接(通过以太网或 Wifi 连接),不是吗?

但你只有一个 IP 地址。

为了实现这一点,路由器允许您连接out - 但不允许从外部发起的任何连接返回(相关性的简化 - 如果您需要更多信息,请阅读)。 p>

您将不得不考虑配置端口转发 - 您希望外部端口 8080 转发到您计算机的内部 IP 地址。

【讨论】:

  • 这实际上是托管在 Slicehost 上的。
  • @tptcat 那么端口应该是开放的,我不知道该说什么——你试过用nmap诊断连接问题吗?
  • 我让它工作了。我意识到我用来将端口 8080 添加到 iptables 的任何东西实际上并没有占用(我假设),因为我有一个用于规则的实际 iptables 文件。在我的 iptables 文件中添加端口 8080 后,一切都很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多