无法从外部访问node.js.

时间:2012-01-30 02:37:29

标签: linux node.js external iptables

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

我在我的服务器上安装了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正在监听连接。

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

1 个答案:

答案 0 :(得分:3)

您最有可能支持网络地址转换(NAT)。

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

但你只有一个IP地址。

为实现此目的,路由器允许您连接 out - 但不允许从外部启动任何连接(简化相关性 - 如果您需要更多信息,请阅读)。

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