Nginx的Permission denied錯誤

Nginx的Permission denied錯誤

環境: CentOS7html

問題描述

今天搭建了nginx+uwsgi+django的環境,以後經過瀏覽器訪問遇到下面問題:linux

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"nginx

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

緣由

經過ps命令查看nginx進程爲用戶nginx,而uwsgi進程爲用戶root。估計是權限不一致致使nginx沒法訪問uwsgi進程(socket方式通訊)。 因此修改nginx的配置文件/etc/nginx/nginx.conf,把user選項從nginx改爲root。以後執行重啓命令systemctl restart nginxdjango

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

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

setsebool -P httpd_can_network_connect 1

而後從新訪問瀏覽器,發現能夠打開頁面了。若是還不行就完全一些,關閉selinux:socket

setenforce 0

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

One More Thing

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

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

@完


參考:

相關文章
相關標籤/搜索