nginx监听端口和反向代理端口的权限问题
Linux的SELinux安全性控制除作用于文件系统外还作用于端口,这使得那些作为服务启动的进程只能在规定的几个端口上监听。为叙述方便我们称之为受控端口。
nginx监听端口
要查看当前有哪些受控端口可执行:
# semanage port -l | grep '^http_port_t'
http_port_t tcp , , , , , , ,
这里显示了八个端口号,其中包括80端口。由于nginx默认在80端口监听因此启动正常。
# service nginx start
我们接下来可做个试验,看看nginx能否在其它端口上监听,比如8888端口。为此新加/etc/nginx/conf.d/test.conf文件:
# /etc/nginx/conf.d/test.conf
server {
listen ;
server_name localhost;
}
你也可以不新加本文件,而是直接修改/etc/nginx/conf.d/default.conf文件。
完成后让nginx重新加载配置:
# nginx -s reload
虽然该命令执行成功,但实际上8888端口并未处于监听状态:
# netstat -anp | grep
上面的netstat命令无输出,这表明8888端口不在监听状态。进一步我们查看一下审计日志:
vi /var/log/audit/audit.log
在文件尾部发现如下两行:
type=AVC msg=audit(1452146884.454:): avc: denied { name_bind } for pid= comm="nginx" src= scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket
type=SYSCALL msg=audit(1452146884.454:): arch=c000003e syscall= success=no exit=- a0=b a1=1b5cc60 a2= a3=7ffdaf0be83c items= ppid= pid= auid= uid= gid= euid= suid= fsuid= egid= sgid= fsgid= tty=(none) ses= comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null)
这里的详细含义我也不清楚,但肯定的是nginx无权限在8888端口上监听。如果你确实希望nginx在8888端口上监听,则可把8888端口号注册为受控端口。注册前请先检查一下8888端口是否已被登记:
semanage port -l | grep
如果有输出则表示8888端口已被注册,此时请换用其它端口。
要注册http 8888端口号请执行:
semanage port -a -t http_port_t -p tcp
作为一种好习惯我们应再次检查一下受控端口列表,看看有没有刚注册的端口号:
semanage port -l | grep '^http_port_t'
最后再让nginx重新加载配置:
# nginx -s reload
此时8888端口应处于监听状态:
# netstat -anp | grep
nginx反向代理端口
如果你想让你的应用被nginx反向代理,则被反向代理的端口号也必须为已受控端口。
其它说明
不知何故,只当你把nginx启动为服务时端口才受Linux安全性控制,如果你直接运行nginx则不受此控制。
nginx监听端口和反向代理端口的权限问题的更多相关文章
- nginx在使用非80端口做反向代理【转】
设置nginx反向代理,nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误 upstream jboss{ server max_fails= fail_timeout=20s; s ...
- nginx 监听一个端口同时支持https和http
nginx 如何想同时支持https和http,必须监听两个不同的端口,比如http:listen 80; https:listen 443; server { listen 1234 ssl;s ...
- nginx监听相同端口,根据域名请求不同的server
nginx监听相同端口,根据域名请求不同的server 学习了:https://blog.csdn.net/liaosiqian/article/details/54861270 注意其中用的是rew ...
- 【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题
问题描述 1) 当成功的在Service Fabric集群中部署了应用后,如何来访问呢?如果是一个Web服务,它的URL又是什么呢? 2) 当Service Fabric集群中,服务之间如需要相互访问 ...
- pluto中监听各个网口的500端口处理逻辑
1. pluto中监听各个网口的500端口处理逻辑 whack_handle() find_ifaces() find_raw_ifaces4() socket.setsockopt.bind.ioc ...
- 使用Nginx对.NetCore站点进行反向代理
前言 之前的博客我已经在Linux上部署好了.NetCore站点且通过Supervisor对站点进行了进程守护,同时也安装好了Nginx.Nginx的用处非常大,还是简单说下,它最大的功能就是方便我们 ...
- nginx配置虚拟主机、反向代理和负载均衡
为了实现这个功能,需要修改nginx的配置文件,将nginx.conf清理一下,使结构更清晰. worker_processes ; events { worker_connections ; } h ...
- Nginx源码研究八:nginx监听socket实现流程
前面描述了nginx系统分析nginx的配置文件,初始化模块相关参数的过程,这里利用nginx监听socket的实现过程,做一次完整的回顾 1.首先,nginx启动的main函数中,会先初始化cycl ...
- Nginx服务器部署 负载均衡 反向代理
Nginx服务器部署负载均衡反向代理 LVS Nginx HAProxy的优缺点 三种负载均衡器的优缺点说明如下: LVS的优点: 1.抗负载能力强.工作在第4层仅作分发之用,没有流量的产生,这个特点 ...
随机推荐
- js 写table 函数
//创建 table函数 function table(row,col,b,w) { document.write('<table border='+b+'>'); for(var i=0 ...
- qt model/view 架构自定义模型之QStringListModel
# -*- coding: utf-8 -*- # python:2.x #QStringListModel #QStringListModel 是最简单的模型类,具备向视图提供字符串数据的能力. # ...
- Javascript 中的变量
var a; console.log("The value of a is " + a); // The value of a is undefined console.log(& ...
- PC-CSS-分隔线
单个标签实现分隔线: 点此查看实例展示 .demo_line_01{ padding: 0 20px 0; margin: 20px 0; line-height: 1px; border-left: ...
- 计算直线的交点数(set + 打表)
计算直线的交点数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- [Javascript] property function && Enumeration
var vehicle3 = { type: "Submarine", capacity: 8, storedAt: "Underwater Outpost", ...
- CreateFile使用方法和样例
函数原型: HANDLE CreateFile( LPCTSTR lpFileName, //指向文件名称的指针 DWORD dwDesiredAccess, //訪问模式(写/读) DWORD dw ...
- Ubuntu包管理命令 dpkg、apt和aptitude
起初GNU/Linux系统中仅仅有.tar.gz.用户 必须自己编译他们想使用的每个程序.在Debian出现之後,人们觉得有必要在系统 中加入一种机 制用来管理 安装在计算机上的软件包.人们将这套系统 ...
- SQLLoader7(只导入数据文件的其中几行记录)
数据文件: D:\oracletest\test1.txt SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN ...
- [跟我学Spring学习笔记][DI配置与使用]
DI 依赖和依赖注入 定义 传统的依赖一般指"类之间的关系",那先让我们复习一下类之间的关系: 泛化:表示类与类之间的继承关系.接口与接口之间的继承关系: 实现:表示类对接口的实现 ...