我是ssh和Centos 6.4的新手,我想在端口80上运行nodejs。但无法让它在外部工作。
当我输入netstat -anp | grep 8080
时,我可以看到我的节点正在侦听。
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 7976/node
但它不是外在的。
我尝试将设置添加到iptables,结果再次相同。它不起作用。
[root@culturalinfluences ~]# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http /* node.js port */
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:webcache /* node.js port */
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
这是我的nodejs
var port = 8080;
app.listen(port, "0.0.0.0" ,function() {
console.log("Listening on " + port);
});
谢谢你们四个明白因为我真的很喜欢linux及其iptables系统。我相信像我这样的人会搜索同一个问题,我希望他们能从这个问题中找到答案。
感谢您的帮助。
答案 0 :(得分:1)
你有一个
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
在您允许的“http”端口之前,因此永远不会达到这些规则。请将REJECT all
规则移到列表底部。
此外,您可能希望在-n
命令行上使用iptables
来确保端口号正确,而不是80
而不是8080
。