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层仅作分发之用,没有流量的产生,这个特点 ...
随机推荐
- LeetCode198 House Robber
You are a professional robber planning to rob houses along a street. Each house has a certain amount ...
- aop动态代理学习
学习,顺便做个demo,方便理解. A接口有c方法,类B实现A接口,原本应该是执行B类中的c方法,可现在不这样做: 我声明产生B类的代理类B',由它来冒充B类的“兄弟”并“实现”A接口, 对外界来说B ...
- Android Call requires API level 11 (current min is 8)的解决方案
[错误描述] 在用Eclipse开发过程中,为了兼容Android2.2和4.0以上版本,我在使用Notification类时做了2个版本的代码,代码根据系统版本不同执行相应模块,结果,等我输完代码, ...
- C#模拟网站用户登录
我们在写灌水机器人.抓资源机器人和Web网游辅助工具的时候第一步要实现的就是用户登录.那么怎么用C#来模拟一个用户的登录拉?要实现用户的登录,那么首先就必须要了解一般网站中是怎么判断用户是否登录的. ...
- python基础学习05(核心编程第二版)部分
# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #========== ...
- 修改UITextField placeholder Color
[YourtextField setValue:[UIColor colorWithRed:97.0/255.0 green:1.0/255.0 blue:17.0/255.0 alpha:1.0] ...
- servlet获得完整路径
request.getQueryString() request.getParameterMap() request.getParameterNames() 在servlet中GET请求可以通过Htt ...
- Docker搭建私有仓库
1,下载仓库镜像. docker pull registry //主要用于搭建私有仓库的. 2,将宿主机端口映射到容器中去,容器的5000端口是不能更改的. docker run -d -p ...
- mvc 5 的过滤器和webapi 过滤器 对应实现的action过滤器区别
asp.net webapi Action过滤器实现这个: #region 程序集 System.Web.Http, Version=5.2.3.0, Culture=neutral, Publi ...
- Ext tpl 造成 store不能正确加载
最近维护别人写的代码的时候,遇到了这么个情况 找原因找到了这行代码的身上 tpl: '<tpl for="."><div ext:qtip="{name ...