无法从外部网络访问nodejs服务器

时间:2016-07-21 17:23:34

标签: node.js

我创建了一个节点js服务器,但我无法从网络外部访问它。

var express = require('express');
    var nodeapp = express();

var http = require('http');
var server = http.createServer(handleRequest);
function handleRequest(request, response){
        console.log("Got some request" + request);
        response.end("Response" + request.url);
}


server.listen(8086, "0.0.0.0", function() {
        console.log("http server on ");
});
sudo 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 

我的iptables没有显示任何内容。但是我有一个tomcat服务器,它在端口8080上,我可以访问它。

1 个答案:

答案 0 :(得分:1)

如果您正在使用RedHat的基本安装,那么您很可能已启用SELinux

关于SELinux的简短说明,与此问题相关的是,您可以打开和关闭用于http访问的端口。像iptables这样的操作是没有必要的。标准端口(如80和8080)通常在初始设置中已打开。

https://wiki.centos.org/HowTos/SELinux

参见第5.4节

  

我们可能希望允许Apache等服务绑定和侦听非标准端口上的传入连接。默认情况下,SELinux策略仅允许服务访问与这些服务关联的已识别端口。如果我们想允许Apache在tcp端口81上侦听,我们可以添加规则以允许它使用' semanage'命令:

semanage port -a -t http_port_t -p tcp 81 
     

SELinux允许访问服务的端口的完整列表可以通过以下方式获得:

semanage port -l