Centos

CentOS7 nginx 權限被拒絕媒體和靜態

  • September 2, 2017

你好

我已經嘗試部署 django web 伺服器一個星期,最後我做到了,但是現在我遇到了 nginx 的權限被拒絕問題

/var/log/nginx/errors.log

/2016-07-12_1.png HTTP/1.0", host: "ip"      2017/08/28 08:22:38 [error] 873#0: *122 open() "/srv/www/Best/media/Profile Pictures/1/2016-07-12_1.png" failed (13: Permission denied), client: 94.183.22.168, server: ip, request: "GET /media/Profile%20Pictures/1/2016-07-12_1.png HTTP/1.0", host: "ip"

www 文件夾權限

drwxr-xr-x 4 root nginx 4096 Aug 27 15:05 www

最佳(項目文件夾)權限

drwxrw-r-- 9 uwsgi nginx 4096 Aug 27 21:27 Best

媒體文件夾權限

drw-rw-r-- 3 uwsgi nginx   4096 Aug 26 12:32 media

靜態文件夾權限

drwxrwxr-x 3 uwsgi nginx   4096 Aug 27 21:22 static

您已drwxrw-r--為目錄設置。它應該至少是以下之一:

  • drwxrwxr-x- 組讀、寫、執行,都可以看到內容。除非您確實需要該組的寫入權限,否則不推薦。
  • drwxr-xr-x- 群讀和執行,都可以看到內容。
  • drwxr-x---- 由小組閱讀和執行。

您也沒有顯示文件的權限。這也可能是一個問題。

我有兩個選擇給你。單獨修復每個文件夾和文件或一次性修復很多。一次性修復很多可能會刪除任何特殊權限(如寫入權限),但如果您知道自己在做什麼,也可以稍後修復。

選項 1,按目錄和文件設置:

sudo chmod 750 /path/to/each/directory
sudo chmod 640 /path/to/each/file

選項 2,為所有人設置:

sudo find /path/to/www/root -type d -print0 | xargs -0 chmod 750
sudo find /path/to/www/root -type f -print0 | xargs -0 chmod 640

就個人而言,我會使用750( drwxr-x---) 表示目錄,使用640( )-rw-r----表示網站上的文件,但您可能希望使用755( drwxr-xr-x) 和644( -rw-r--r--)。

引用自:https://unix.stackexchange.com/questions/388791