Linux開啟SELinux的情況下怎么解決nginx403跟502錯誤


https://www.cnblogs.com/caijt/p/10978324.html

以上篇博客中說了怎么在linux部署asp.net core  跟 nginx,里面成功的前提是把SElinux關了,SELinux一開,確實出現很多莫名奇妙的問題,我網上查,大多數的解決方法也是教你把SElinux關了。

 

我研究了下怎么在不關SELinux的情況下,Nginx還能正常地使用。

 

先說下SElinux是什么,其實我也看不太懂,不過我了解了一點規則

先說下兩個命令跟參數
ps -Z 
ls -Z 
注意Z參數可以顯示出SElinux的信息

如下圖紅圈,第一個是進程的SElinux信息,第二個是文件的SElinux,system_u是用戶,object_r是用色,http_t是類型,這個類型比較重要,其它的好像沒啥影響

就直接點說nginx來說,這個進程只能訪問httpd_sys_content_t類型的文件,所以如果出現403的話,就是你的www目錄的類型不對,所以得把www目錄設置成httpd_sys_content_t類型

semanage fcontext -a -t httpd_sys_content_t '/var/www(/.*)?'

 

這樣一般就能解決SELinux導致的403問題了

 

后面我又遇到了一個問題,在nginx里我有設置了 /api轉發到http://localhost:5000,可一直返回502的錯誤,我知道又是SElinux的問題

 

經過我不斷地百度

終於讓我找到這個博客,這真的是百度上為數不多的不教人關掉SElinux的教程,值得點贊 https://www.jianshu.com/p/ae3f8a8ca54f

setsebool -P httpd_can_network_connect 1

 

好了,這樣Nginx就可以愉快地跟Selinux相處了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM