Django服务器错误403禁止nginx / 1.10.3(ubuntu)

时间:2018-05-15 10:53:18

标签: django nginx ubuntu-server

我在ubuntu服务器上有一些媒体内容。我可以上传文件。但是当我尝试加载文件时,它会显示 403 forbidden nginx / 1.10.3(ubuntu)。在文件权限中,它会显示 rw --------

如何在没有错误的情况下检索所有内容? 我不熟悉Ubuntu

我使用此代码段来恢复文件。但是,它只能在一次性工作。一段时间后,它显示相同的错误。

sudo chmod -R 664 /home/django/media/image/
sudo chmod -R a+X /home/django/media/image/

1 个答案:

答案 0 :(得分:0)

nginx用户必须能够读取这些文件。您可以使用组权限来允许。此外,wsgi用户必须设置umask,以便它创建的文件对组也是可读的。

在您的情况下,您的wsgi用户看起来像是umask 077,这使得它创建的文件只能由所有者(rw--------)读取。因此nginx没有读取权限。而是使用umask 027,它将允许组用户访问这些文件,但不能写入它们(nginx没有理由拥有写访问权限。)

例如,如果您使用gunicorn作为wsgi服务器,则可以使用gunicorn标记--group www --umask 027。确保gunicorn和nginx用户都属于www组。

修复类似的权限。

# set group to `www` for all files recursively
sudo chgrp www -R /home/django/media/
# set all files to be read/write by owner and readable by group `www`
find /home/django/media/ -type f -exec chmod 640 {} ; 
# same with directories +execute
find /home/django/media/ -type d -exec chmod 750 {} ; 

或者,对文件使用644,对目录使用755,对于umask使用022。然后,组权限并不重要,因为所有用户都获得了读访问权限。

后一个选项不是安全性最佳实践,但它可能没问题,只要您只给django用户写入权限。