微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从Ubuntu上的外部IP访问Node.js.

我确定这是非常无趣的,所以请原谅我.
我正在尝试在我的ubuntu 10.04的端口8080上运行node.js服务器.

这是服务器上iptables -L的结果:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

这是nmap -p 8080的结果(编辑了ip地址,因为所有内容都应该或者应该是全开的)

nmap 173.203.xxx.xxx -p 8080 -A

Starting Nmap 5.00 ( http://nmap.org ) at 2011-05-19 22:52 PDT
Interesting ports on xxx (173.203.xxx.xxx):
PORT     STATE  SERVICE    VERSION
8080/tcp closed http-proxy

为什么8080被视为封闭?
添加这个没有帮助:

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

我真的很困惑.

我会加上这个,万一它有所帮助,但我不知道

netstat -pan | grep 80
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN          16785/node      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      16471/apache2

我可以访问我在apache上运行80端口的常规网站,但是从外面无法访问node.js服务器.从服务器本身访问它可以正常工作.

所以我的问题是:我将如何调试这个?除了iptables阻止某些端口之外还有别的东西吗?我怎么知道它是什么?

任何帮助非常感谢!

感谢您添加最后一个netstat输出,它确实有帮助.您无法从外部访问node.js,因为它正在侦听localhost IP,即127.0.0.1.您需要将node.js配置为侦听0.0.0.0,以便它能够接受计算机所有IP上的连接.
var http = require('http');

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐