我创建了一个节点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上,我可以访问它。
答案 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