CentOS 7中nginx反向代理由於selinux出現錯誤的解決辦法

        由於項目須要,要使用nginx實現反向代理,可是在部署中發現出現了502錯誤代碼,經排查是centos7中的selinux形成的。python

0、相關環境

        centos:7.0linux

        nginx:1.8.1nginx

        selinux爲系統自帶shell

一、錯誤現象

        有兩個現象:①nginx起不來(項目中是須要臨時啓動nginx的);②啓動以後代理出現502錯誤。centos

二、nginx啓動不了的解決

        項目中使用的時候是根據須要臨時啓動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的解決

        好不容易將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!!

相關文章
相關標籤/搜索