open () "/root/project/static/*.css" не удалось (13: разрешение запрещено) nginx - PullRequest
0 голосов
/ 23 мая 2018

У меня есть настройка моего проекта с 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 голосов
/ 16 мая 2019

У меня такая же проблема.Мой сервер nginx на Centos 7.6 не может получить доступ к статической папке по пути /home/user/app/mysyte/static//var/log/nginx/error.log та же ошибка open() "/home/user/app/mysyte/static/*.css" failed (13: Permission denied)

Для решения этой проблемы посмотрите на эту страницу выпуск 2

0 голосов
/ 23 мая 2018

Я предполагаю, что проблема в том, что каталог вашего проекта 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

Надеюсь, это имеет смысл.Решение может быть одним из следующих:

  • Запуск рабочих nginx от имени пользователя root (не рекомендуется)
  • Перемещение каталога проекта в местоположение, предназначенное для доступа нескольких пользователей, напримеркак /usr/local/share или /var/www/ (рекомендуется)
...