无法从外部访问NodeJS服务器

时间:2011-11-05 02:09:44

标签: node.js iptables

我在Rackspace中部署了一个nodejs服务器,可以在内部访问,如使用:

curl http://127.0.0.1:8080

但是,即使我这样做,也无法从外部(互联网)访问:

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

以下是我的代码:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Simple server\n');
}).listen(8080, "0.0.0.0");
console.log('Server running at http://0.0.0.0:8080/');

有什么想法吗?

3 个答案:

答案 0 :(得分:9)

我认为你应该尝试不指定IP。

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Simple server\n');
}).listen(8080);
console.log('Server running at http://0.0.0.0:8080/');

答案 1 :(得分:7)

我很确定你必须使用

iptables -A OUTPUT -p tcp  --sport 8080 -j ACCEPT

表示传出规则(不是dport)。除此之外,也许有一个阻止流量的早期规则?试试iptables -L

答案 2 :(得分:0)

在本地虚拟机上配置Nodejs时遇到相同的问题。请尝试以下步骤,

  
      
  1. 在JS代码中使用 listen(PORT),在您的情况下, PORT将为8080
  2.   
  3. 在服务器计算机中添加以下条目:
  4.   
$ sudo iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT