Nginx权限在Django的静态内容上被拒绝13

Nginx权限在Django的静态内容上被拒绝13

本文介绍了Nginx权限在Django的静态内容上被拒绝13的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用了此教程来设置virtualenv和Nginx服务器.我完全按照提示进行了操作,但是我仍然得到

I used this tutorial to setup a virtualenv and the nginx server.I did exactly what was told, but I still get a

尝试访问静态内容时出现

错误.我已经将我的静态目录和整个Django项目设置为www-data所有.

error when trying to access static content.I already set my static dir and the whole Django project to be owned by www-data.

此外,如果我忽略静态内容,并尝试让所有内容都以皇帝身份运行,则会遇到更多权限被拒绝的错误.现在,每次我尝试访问该网站时.

Further on, if I ignore the static content and try to let everything run with emperor I run into more permission denied errors. Now for everytime I try to access the site.

root      8704  0.0  0.0  62780  1260 ?        Ss   16:19   0:00 nginx: master process /usr/sbin/nginx
www-data  8705  0.0  0.0  63108  1680 ?        S    16:19   0:00 nginx: worker process
www-data  8706  0.0  0.0  63108  1680 ?        S    16:19   0:00 nginx: worker process
www-data  8707  0.0  0.0  63108  1680 ?        S    16:19   0:00 nginx: worker process
www-data  8708  0.0  0.0  63448  2276 ?        S    16:19   0:00 nginx: worker process

启动uwsgi时: https://gist.github.com/anonymous/f19997fd07c0237a7435 作为根使用www-data启动uwsgi时:

When starting uwsgi: https://gist.github.com/anonymous/f19997fd07c0237a7435 as rootWhen starting uwsgi with www-data:

root@vmd2719:~/energy1/energydrinks# uwsgi --ini django.ini --uid www-data --gid www-data
[uWSGI] getting INI configuration from django.ini
open("./python27_plugin.so"): No such file or directory [core/utils.c line 3321]
!!! UNABLE to load uWSGI plugin: ./python27_plugin.so: cannot open shared object file: No such file or directory !!!
*** Starting uWSGI 1.9.6 (64bit) on [Mon Apr 15 16:24:49 2013] ***
compiled with version: 4.6.3 on 15 April 2013 11:52:36
os: Linux-3.2.0-40-generic #64-Ubuntu SMP Mon Mar 25 21:22:10 UTC 2013
nodename: vmd2719
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /root/energy1/energydrinks
writing pidfile to /tmp/energy-master.pid
detected binary path: /usr/local/bin/uwsgi
setgid() to 33
setuid() to 33
chdir(): Permission denied [core/uwsgi.c line 2063]
chdir(): Permission denied [core/uwsgi.c line 1249]
chdir(): Permission denied [core/uwsgi.c line 1269]

访问静态文件时的Nginx调试日志:

Nginx debug log on accessing a static file:

2013/04/15 16:20:25 [debug] 8708#0: *1 http filename: "/root/energy1/energydrinks/static/jgrowl/jquery.jgrowl.js"
2013/04/15 16:20:25 [debug] 8708#0: *1 add cleanup: 0000000001F68C10
2013/04/15 16:20:25 [error] 8708#0: *1 open() "/root/energy1/energydrinks/static/jgrowl/jquery.jgrowl.js" failed (13: Permission denied), client: 109.193.75.142, server: .de, request: "GET /static/jgrowl/jquery.jgrowl.js HTTP/1.1", host: ".de:8000", referrer: "http://.de:8000/member/register/"
2013/04/15 16:20:25 [debug] 8708#0: *1 http finalize request: 403, "/static/jgrowl/jquery.jgrowl.js?" a:1, c:1
2013/04/15 16:20:25 [debug] 8708#0: *1 http special response: 403, "/static/jgrowl/jquery.jgrowl.js?"
2013/04/15 16:20:25 [debug] 8708#0: *1 http set discard body
2013/04/15 16:20:25 [debug] 8708#0: *1 xslt filter header
2013/04/15 16:20:25 [debug] 8708#0: *1 charset: "" > "utf-8"
2013/04/15 16:20:25 [debug] 8708#0: *1 HTTP/1.1 403 Forbidden

推荐答案

因此,您的nginx在/root中以www-data的身份运行.普通用户无法访问/root(除非您chmod +x,这是个坏主意).

So your nginx is running as www-data inside /root... That can't be good. /root is not accessible by normal users (unless you chmod +x it, which is a bad idea).

您应该将数据移出/srv/http/var/www/home/whatever,但不能移出/root.

You should move your data outside of it, in /srv/http, /var/www or /home/whatever, but not in /root.

这篇关于Nginx权限在Django的静态内容上被拒绝13的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 01:37