Nginx的Permission denied錯誤


Nginx的Permission denied錯誤

環境: CentOS7

問題描述

今天搭建了nginx+uwsgi+django的環境,之后通過瀏覽器訪問遇到下面問題:

2017/03/31 19:38:13 [crit] 191969#191969: *5 connect() to 127.0.0.1:8000 failed (13: Permission denied) while connecting to upstream, client: 192.168.0.10, server: localhost, request: "GET /admin HTTP/1.1", upstream: "uwsgi://127.0.0.1:8000", host: "192.168.0.20:8080"

上面來自/var/log/nginx/error.log。

原因

通過ps命令查看nginx進程為用戶nginx,而uwsgi進程為用戶root。估計是權限不一致導致nginx無法訪問uwsgi進程(socket方式通信)。
所以修改nginx的配置文件/etc/nginx/nginx.conf,把user選項從nginx改成root。之后執行重啟命令systemctl restart nginx

再次打開瀏覽器訪問django,發現仍然不行。(+﹏+)~狂暈

上網繼續調查,發現還有一個原因可能引起這個問題,那就是selinux,執行下面命令:

setsebool -P httpd_can_network_connect 1

然后重新訪問瀏覽器,發現可以打開頁面了。如果還不行就徹底一些,關閉selinux:

setenforce 0

O(∩_∩)O哈哈~,終於搞定了。

One More Thing

在stackoverflow網站看到一個回復是說使用root運行uwsgi還是不太好的,建議使用一個和nginx相同的普通賬戶運行。例如:

uwsgi -s /tmp/uwsgi.sock -w my_app:app --uid www-data --gid www-data

@完


參考:


免責聲明!

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



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