无法从外部访问node.js

问题描述:

我对这个问题处处寻找答案,但一直没有任何运气。无法从外部访问node.js

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

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

+0

操作系统防火墙软件怎么样? – 2012-01-30 03:15:55

你最有可能落后网络地址转换(NAT)。

如果您使用的是普通家庭的互联网连接和你有一个网关路由器,你可以使用你家的网络连接(通过以太网或WiFi已连接),无有多个设备?

但是你只有一个IP地址。

要做到这一点,路由器可以连接 - 但不会让回(简化的相关性 - 读,如果你想了解更多信息)从外部发起的任何连接。

你要来看看配置端口转发 - 你想外部端口8080转发到您的计算机的内部 IP地址。

+0

这实际上是在Slicehost上托管的。 – tptcat 2012-01-30 02:48:04

+0

@tptcat则端口应该是开放的,我不知道该说些什么 - 你尝试过使用'nmap'诊断连接问题? – Borealid 2012-01-30 02:49:20

+0

我得到它的工作。我意识到,无论我用什么来将端口8080添加到iptables中,实际上并没有采取(我假设),因为我有一个实际的iptables文件用于规则。 一旦我添加的端口8080,我的iptables文件中的所有良好。 – tptcat 2012-02-02 17:17:27