Wagtail(django) и Nginx Статические файлы не обслуживаются

Я разворачиваю сайт wagtail с помощью nginx на rocky linux, однако я не могу заставить статические файлы обслуживаться nginx.

Конфигурация моего сайта nginx выглядит следующим образом:

server {
        listen 80;
        server_name 10.4.0.189;
        root /home/wagtail/apps/my_site;
        charset UTF-8;
        error_log /home/wagtail/apps/my_site/nginx-error.log;

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

        location static/ {
                root /home/wagtail/apps/my_site/;
        }

        location / {
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://unix:/run/gunicorn.sock;
        }
}

Я пробовал несколько конфигураций расположения блоков, включая alias.

Я проверил разрешения на чтение/запись в каталоге, где находится приложение:

drwxrwxr-x.  6 wagtail nginx  4096 Nov  7 08:27 .
drwxrwxr-x.  4 wagtail nginx  4096 Nov  6 14:41 ..
-rwxrwxr-x.  1 wagtail nginx  2029 Nov  6 14:41 Dockerfile
-rwxrwxr-x.  1 wagtail nginx   376 Nov  6 14:41 .dockerignore
drwxrwxr-x.  6 wagtail nginx  4096 Nov  6 14:44 home
drwxrwxr-x.  6 wagtail nginx  4096 Nov  7 08:34 my_site
-rwxrwxr-x.  1 wagtail nginx   256 Nov  6 14:41 manage.py
-rwxrwxr-x.  1 wagtail nginx 56199 Nov  7 13:31 nginx-error.log
-rwxrwxr-x.  1 wagtail nginx    35 Nov  6 14:41 requirements.txt
drwxrwxr-x.  4 wagtail nginx  4096 Nov  6 14:44 search
drwxrwxr-x. 11 wagtail nginx  4096 Nov  7 13:07 static
wagtail : wagtail nginx

Nginx является владельцем группы, и я также сделал пользователя wagtail частью группы nginx.

Я проделал несколько модификаций selinux, используя команду:

journalctl -t setroubleshoot

Это, кажется, избавило от всех ошибок selinux, но статическое содержимое по-прежнему отображается как 403 forbidden.

Проверяя nginx-error.log, я вижу, что это все еще проблема, связанная с правами доступа:

2024/11/07 13:30:11 [error] 3142#3142: *9 open() "/home/wagtail/apps/my_site/static/js/my_site.d41d8cd98f00.js" failed (13: Permission denied), client: 10.20.0.22, server: 10.4.0.189, request: "GET /static/js/my_site.d41d8cd98f00.js HTTP/1.1", host: "10.4.0.189", referrer: "http://10.4.0.189/"
2024/11/07 13:30:11 [error] 3142#3142: *8 open() "/home/wagtail/apps/my_site/static/css/welcome_page.85e6f9d19e42.css" failed (13: Permission denied), client: 10.20.0.22, server: 10.4.0.189, request: "GET /static/css/welcome_page.85e6f9d19e42.css HTTP/1.1", host: "10.4.0.189", referrer: "http://10.4.0.189/"
2024/11/07 13:30:11 [error] 3142#3142: *6 open() "/home/wagtail/apps/my_site/favicon.ico" failed (13: Permission denied), client: 10.20.0.22, server: 10.4.0.189, request: "GET /favicon.ico HTTP/1.1", host: "10.4.0.189", referrer: "http://10.4.0.189/"
2024/11/07 13:31:00 [error] 3176#3176: *1 open() "/home/wagtail/apps/my_site/favicon.ico" failed (13: Permission denied), client: 10.20.0.22, server: 10.4.0.189, request: "GET /favicon.ico HTTP/1.1", host: "10.4.0.189", referrer: "http://10.4.0.189/"

Причина неавторизованной ошибки заключается в том, что nginx использует пользователя под именем www-data.

Также можно добавить разрешения без изменения имени пользователя, но Существует также простой способ изменить имя пользователя, используемое nginx.

Как изменить имя пользователя nginx:

$ sudo nano /etc/nginx/nginx.conf
# change user www-data to ubuntu
$ sudo systemctl restart nginx

Поскольку добавление только разрешений является сложным, оно заменено ссылкой.

https://django.seolpyo.com/entry/31/?page=4

Вернуться на верх