Отказано в разрешении /media файлов Настройка Django Nginx
Я следовал этому руководству:
Все работает (статические файлы обслуживаются и т.д.), но загруженные пользователем медиа файлы показывают "разрешение отклонено" при попытке доступа к изображению:
2023/01/21 09:50:01 [error] 12912#12912: *266 open() "/home/hvn/intranet/intranet/media/images/werkstujk_1_Far44Li.2e16d0ba.fill-322x247-c100.jpg" failed (13: Permission denied), client: xxx.xxx.xxx.xxx, server: xxxxx.net, request: "GET /media/images/werkstujk_1_Far44Li.2e16d0ba.fill-322x247-c100.jpg HTTP/1.1", host: "www.xxxxxx.net", referrer: "https://www.xxxxx.net/blogs/"
Я использую wagtail в качестве cms системы.
Сокет Gunicorn запущен под пользователем 'hvn' и группой 'www-data'.
Разрешения на каталоги и файлы выглядят следующим образом:
750 для каталогов и 644 для файлов:
ll | grep media
drwxr-xr-x 5 hvn www-data 4096 Jan 17 22:36 media/
-rw-r--r-- 1 hvn www-data 33857 Jan 21 00:24 werkstujk_1_Far44Li.2e16d0ba.fill-322x247-c100.jpg
Мой файл конфигурации nginx обслуживает папку media:
location /media/ {
root /home/hvn/intranet/intranet;
}
/etc/nginx/sites-enabled/xxx.xx
server {
server_name xxx.xx *.xxx.xx;
location = /favicon.ico { access_log off; log_not_found off; }
location /collectstatic/ {
root /home/hvn/intranet/intranet;
}
location /media/ {
root /home/hvn/intranet/intranet;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/xxx.xx/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/xxx.xx/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.xxxx.xx) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = xxx.xx) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name xxx.net *.xxx.xx;
return 404; # managed by Certbot
Что я делаю неправильно? Пожалуйста, помогите мне. Спасибо заранее.
Решено: Пришлось установить в nginx.conf, что nginx запускается под тем же пользователем, который обслуживает сайт:
Проверьте пользователя в файле /etc/nginx/nginx.conf Измените право собственности на пользователя. sudo chown -R nginx:nginx /var/lib/nginx