由於項目須要,要使用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!!