由于项目须要,要使用nginx实现反向代理,可是在部署中发现出现了502错误代码,经排查是centos7中的selinux形成的。python
centos:7.0linux
nginx:1.8.1nginx
selinux为系统自带shell
有两个现象:①nginx起不来(项目中是须要临时启动nginx的);②启动以后代理出现502错误。centos
项目中使用的时候是根据须要临时启动nginx的,发现nginx起不来,发现将selinux关闭以后就起得来了,因此应该是selinux形成的,可是不能关闭selinux,那样作太粗暴了!tcp
经查询,须要使用下面的命令,将对应的端口添加进selinux的容许列表中:centos7
semanage port -a -t http_port_t -p tcp 9993
这个命令执行起来须要的时间比较长,请耐心等待。
spa
若是系统提示没有对应的命令须要使用下面的命令安装:代理
yum install policycoreutils-python
好不容易将nginx启动以后,又发现根本不能访问被代理的内容,报告的是502错误。code
经查询,也是selinux形成的!
使用这个命令就能够查看相关的信息了:
cat /var/log/audit/audit.log | grep nginx | grep denied
一样的,咱们能够将这个信息制做位selinux的一个模块性质的东西,将其导入selinux,而后就能够解决问题了:
cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
这个命令会在当前目录生成两个文件:
mynginx.pp mynginx.te
这两个文件就是咱们须要的,执行命令就能够将其导入了:
semodule -i mynginx.pp
一样,这个命令也会等待一段时间,在其余的机器上导入这个模块也会获得相同的效果,将对应的端口添加进selinux
本文记录的是centos 7 中由于selinux致使程序端口起不来和被拒绝的解决,虽然演示的是nginx以及9993端口,可是对于其余的程序和端口也是同样的,只须要对应着修改就行啦。
enjoy!!