http://www.javashuo.com/article/p-ddzeufrn-d.htmlhtml
以上篇博客中說了怎麼在linux部署asp.net core 跟 nginx,裏面成功的前提是把SElinux關了,SELinux一開,確實出現不少莫名奇妙的問題,我網上查,大多數的解決方法也是教你把SElinux關了。linux
我研究了下怎麼在不關SELinux的狀況下,Nginx還能正常地使用。nginx
先說下SElinux是什麼,其實我也看不太懂,不過我瞭解了一點規則api
先說下兩個命令跟參數 ps -Z ls -Z 注意Z參數能夠顯示出SElinux的信息
以下圖紅圈,第一個是進程的SElinux信息,第二個是文件的SElinux,system_u是用戶,object_r是用色,http_t是類型,這個類型比較重要,其它的好像沒啥影響asp.net
就直接點說nginx來講,這個進程只能訪問httpd_sys_content_t類型的文件,因此若是出現403的話,就是你的www目錄的類型不對,因此得把www目錄設置成httpd_sys_content_t類型spa
semanage fcontext -a -t httpd_sys_content_t '/var/www(/.*)?'
這樣通常就能解決SELinux致使的403問題了.net
後面我又遇到了一個問題,在nginx裏我有設置了 /api轉發到http://localhost:5000,可一直返回502的錯誤,我知道又是SElinux的問題code
通過我不斷地百度htm
終於讓我找到這個博客,這真的是百度上爲數很少的不教人關掉SElinux的教程,值得點贊 https://www.jianshu.com/p/ae3f8a8ca54fblog
setsebool -P httpd_can_network_connect 1
好了,這樣Nginx就能夠愉快地跟Selinux相處了!