Django正在保存到公共媒体文件夹,错误403
因此,我有Django正在保存到公共媒体文件夹,错误403,django,nginx,gunicorn,Django,Nginx,Gunicorn,因此,我有Angular+Django REST API应用程序托管在nginx+gunicorn设置中。 我正面临一个奇怪的问题。我的媒体文件夹权限设置为777,并且在我的nginx配置中: location /media { alias /home/shalin95/zona_project/zona_api/media; expires 20m; } 我有一个型号产品,带有主图片字段(图像字段将文件保存到/media/photos/)。 当我创建新实例(新产品)时,
Angular
+Django REST API
应用程序托管在nginx
+gunicorn
设置中。我正面临一个奇怪的问题。我的媒体文件夹权限设置为
777
,并且在我的nginx配置中:
location /media {
alias /home/shalin95/zona_project/zona_api/media;
expires 20m;
}
我有一个型号产品
,带有主图片
字段(图像字段
将文件保存到/media/photos/
)。
当我创建新实例(新产品)时,有时当我想在浏览器中打开图像时,会出现403禁止
错误
注意:这种情况偶尔会发生,不是在每个保存的实例上都会发生(没有特定的模式,只是随机发生)
感谢我去查看媒体文件夹,一切都正常(我可以看到图片),但为什么会发生这种情况(在某些情况下)?因此我得出结论,只有当请求大于我认为的(~4MB)时才会发生此问题,因此我添加了
FILE_UPLOAD_MAX_MEMORY_SIZE = 100000000
FILE_UPLOAD_PERMISSIONS = 0o644
在
settings.py
文件中,现在上传工作正常。您不应该使用root
而不是alias
?尝试这样做:root/home/shalin95/zona_project/zona_api
这真的解决了问题吗?我已经看到了别名与根目录的区别,这有什么价值吗?Ngnix有单独的用户吗?您可以在该目录上为Nginix(用户)创建acl吗?然后将acl设为默认值,这样每次创建新文件时,ngnix都可以访问它。你的发行版是什么?嗨,很抱歉回复晚了。用户是www-data
,我正在使用Ubuntu 16.04可能sudo chown-R www-data:www-data-media
解决了这个问题吗?