Django服务器错误403禁止nginx/1.10.3(ubuntu)
我在ubuntu服务器上有一些媒体内容。我可以上传文件。但是当我尝试加载文件时,它会显示403禁止的nginx/1.10.3(ubuntu)。在文件权限中,它会显示rw------ 如何检索所有内容而不出错? 我不熟悉Ubuntu 我用这个片段来恢复文件。但是,它只在单一时间有效。一段时间后,它显示出相同的错误Django服务器错误403禁止nginx/1.10.3(ubuntu),django,nginx,ubuntu-server,Django,Nginx,Ubuntu Server,我在ubuntu服务器上有一些媒体内容。我可以上传文件。但是当我尝试加载文件时,它会显示403禁止的nginx/1.10.3(ubuntu)。在文件权限中,它会显示rw------ 如何检索所有内容而不出错? 我不熟悉Ubuntu 我用这个片段来恢复文件。但是,它只在单一时间有效。一段时间后,它显示出相同的错误 sudo chmod -R 664 /home/django/media/image/ sudo chmod -R a+X /home/django/media/image/ ngin
sudo chmod -R 664 /home/django/media/image/
sudo chmod -R a+X /home/django/media/image/
nginx用户必须能够读取这些文件。您可以使用组权限来允许这样做。此外,wsgi用户必须有自己的设置,以使其创建的文件对组也是可读的 在您的情况下,wsgi用户似乎拥有umask
077
,这使得它创建的文件只能由所有者读取(rw------
)。因此nginx没有读取权限。改为使用umask027
,这将允许组用户访问这些文件,但不向其写入(nginx没有理由拥有写入访问权限)
例如,如果您使用gunicorn作为wsgi服务器,则可以使用gunicorn标志--组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用户写访问权,它可能就可以了。如何启用组权限?文件有一个组和一个用户所有者。使用
ls-la
进行调查。请记住,nginx还需要对所有父目录具有读取+执行权限才能读取文件。您如何尝试访问这些文件?通过HTTP方法?你在运行curl吗?我在使用Https。禁用r&WD的组权限您的nginx服务器是否有阻止IP命中端点的黑名单?在nginx配置中查找,并在服务器配置下查找deny all
。