open()“/ root / project / static / *。css”失败(13:权限被拒绝)nginx

时间:2018-05-23 18:34:22

标签: django ubuntu nginx permissions django-staticfiles

我必须使用uwsgi, django, nginx进行项目设置所有内容似乎都运行良好但不知何故我继续收到错误static files我一直在线阅读并尝试了所有可能的方法但我继续在我的静态文件夹中收到此permission denied错误。

有人可以让我知道我在许可方面做错了什么以及我应该如何改变它?

这是我的/var/log/nginx/error.log

open() "/root/project/static/*.css" failed (13: Permission denied), client: 2xx.xx.xx.xxx, server: _, request: "GET /static/*.css HTTP/1.1", host: "1xx.xx.xx.xxx"

这是我的nginx site-available config

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    # root /var/www/html;

    # Add index.php to the list if you are using PHP
    # index index.html index.htm index.nginx-debian.html;

    server_name _;

    #location = /favicon.ico { access_log off; log_not_found off; }

    #location /media  {
    #       root /root/project/mediafiles;
    #}


        location ^~ /static/ {
        allow all;  # this is from one of the posts but no luck
        auth_basic off;  # this is from one of the posts but no luck
            root /root/project;
        }


        location / {
            include         uwsgi_params;
            uwsgi_pass      unix:/tmp/uwsgi/project.sock;
        }

}

作为我的文件夹权限

对于项目文件夹,它是drwxr-xr-x 23 www-data www-data

对于静态文件夹,它是drwxr-x--- 8 www-data www-data 4096 May 23 14:40 static

我从未获得静态755的许可,但没有运气。 无论如何,这是使用root作为用户而不是拥有额外的用户,root也在www-data

的组中

提前感谢所有帮助。

编辑:

根据建议,这是ps aux | grep nginx

的输出
root       810  0.0  0.0 124972  1440 ?        Ss   02:18   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data   811  0.0  0.0 125688  4840 ?        S    02:18   0:00 nginx: worker process
www-data   812  0.0  0.0 125348  3196 ?        S    02:18   0:00 nginx: worker process
root      1159  0.0  0.0  14224  1004 pts/0    S+   04:25   0:00 grep --color=auto nginx

2 个答案:

答案 0 :(得分:1)

我猜测的问题是您的项目root目录位于/root/root的默认权限为:

drwx------ 14 root root 4096 May 8 12:47 root

如您所见,其他用户(例如www-data)甚至没有对/root目录的读取权限。在Linux FS中,如果您需要在路径/a/b/c上阅读某些内容,则需要具有该路径中每个文件夹的读取权限。

Nginx工作进程以用户www-data运行,该用户试图打开一个以/root为根的文件,此用户没有读取权限,因此提升Permission denied (13)

有关更多详细信息,请参阅此演示:

$ cat /root/test2/text.txt     
cat: /root/test2/text.txt: Permission denied
$ sudo cat /root/test2/test.txt  
A
$ sudo ls -la /root/ | grep test2
drwxrwxrwx   2 root     root       4096 May 24 02:04 test2

希望这是有道理的。解决方案将是以下内容:

  • 以root身份运行nginx worker(不推荐)
  • 将项目目录移至设计为多个用户访问的位置,例如/usr/local/share/var/www/(推荐)

答案 1 :(得分:0)

我有同样的问题。我在Centos 7.6上的Nginx服务器无法访问路径/home/user/app/mysyte/static/中的静态文件夹。在/var/log/nginx/error.log中,同样的错误open() "/home/user/app/mysyte/static/*.css" failed (13: Permission denied)

要解决此问题,请查看此page问题2