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

@完


参考:

相关文章
相关标签/搜索