你好
我已经尝试部署 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--
)。