CentOS7 nginx 媒体和静态权限被拒绝

CentOS7 nginx 媒体和静态权限被拒绝

你好

我已经尝试部署 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

答案1

您已设置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--)。

相关内容