CentOS 7中nginx反向代理因为selinux出现502错误的解决

        因为项目需要,要使用nginx实现反向代理,但是在部署中发现出现了502错误代码,经排查是centos7中的selinux造成的。

0、相关环境

        centos:7.0

        nginx:1.8.1

        selinux为系统自带

1、错误现象

        有两个现象:①nginx起不来(项目中是需要临时启动nginx的);②启动之后代理出现502错误。

2、nginx启动不了的解决

        项目中使用的时候是根据需要临时启动nginx的,发现nginx起不来,发现将selinux关闭之后就起得来了,所以应该是selinux造成的,但是不能关闭selinux,那样做太粗暴了!

        经查询,需要使用下面的命令,将对应的端口添加进selinux的允许列表中:

semanage port -a -t http_port_t -p tcp 9993

        这个命令执行起来需要的时间比较长,请耐心等待。

        如果系统提示没有对应的命令需要使用下面的命令安装:

yum install policycoreutils-python

3、nginx启动之后502的解决

        好不容易将nginx启动之后,又发现根本不能访问被代理的内容,报告的是502错误。

        经查询,也是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

4、结论

        本文记录的是centos 7 中因为selinux导致程序端口起不来和被拒绝的解决,虽然演示的是nginx以及9993端口,但是对于其他的程序和端口也是一样的,只需要对应着修改就行啦。

        enjoy!!

你可能感兴趣的:(centos,selinux,semodule,端口被拒绝)