Django+Nginx环境下媒体文件无法访问(权限拒绝错误)
解决媒体文件无法加载(权限拒绝)问题
问题核心
静态文件正常显示,但媒体文件加载失败,Nginx日志明确提示Permission denied,说明Nginx进程(www-data用户)无法访问媒体文件路径。
解决方案
1. 修复父目录的执行权限
Nginx需要遍历到媒体文件夹的所有父目录,必须给这些目录添加执行权限(允许进程进入目录):
sudo chmod +x /home/shahriar/ sudo chmod +x /home/shahriar/Amlak/ sudo chmod +x /home/shahriar/Amlak/real_estate/
2. 修正Nginx配置中的路径错误
你的Nginx配置里location /media用了占位符路径,且root的路径拼接逻辑容易出错,建议替换为alias并填写实际路径:
location /static { alias /var/www/real_estate/static/; } location /media { alias /home/shahriar/Amlak/real_estate/media/; }
修改后先验证Nginx配置合法性:
sudo nginx -t
输出test is successful后,重启Nginx:
sudo systemctl restart nginx
3. 确保媒体文件及文件夹的读写权限
重新设置媒体目录的所有者和文件权限:
sudo chown -R www-data:www-data /home/shahriar/Amlak/real_estate/media/ sudo chmod -R 644 /home/shahriar/Amlak/real_estate/media/
4. 重启相关服务
最后重启Nginx和Gunicorn:
sudo systemctl restart nginx sudo systemctl restart gunicorn
内容的提问来源于stack exchange,提问作者Alin
相关产品推荐
相关产品推荐

