You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django/Nginx生产环境部署:服务器图片无法加载求助

Django部署后静态图片无法加载的排查思路
  • 确认静态文件收集完成
    执行python manage.py collectstatic命令,Django不会自动聚合各APP下的静态文件到统一目录,必须手动执行此操作。同时检查settings.py中的STATIC_ROOT(静态文件存放的绝对路径)和STATIC_URL(前端访问路径)配置是否匹配,比如:

    STATIC_URL = '/static/'
    STATIC_ROOT = '/var/www/your_project/static/'
    

    直接进入STATIC_ROOT对应的目录,确认目标图片是否存在。

  • 验证Nginx静态资源配置准确性
    检查Nginx配置文件中location /static/的路径是否与STATIC_ROOT完全对应,注意root和alias的区别:

    # 使用root的写法(root指向项目根目录,访问路径会拼接/static/)
    location /static/ {
        root /var/www/your_project;
        expires 30d;
    }
    
    # 或者使用alias的写法(alias直接指向静态文件目录,末尾斜杠要注意)
    location /static/ {
        alias /var/www/your_project/static/;
        expires 30d;
    }
    

    修改配置后,先执行sudo nginx -t检查语法是否正确,再重启Nginx:sudo systemctl restart nginx。

  • 检查文件与目录权限
    静态文件目录和文件的所有者必须匹配Nginx运行用户(通常是www-data或nginx),执行:

    sudo chown -R www-data:www-data /var/www/your_project/static/
    

    同时设置合理权限:

    sudo chmod -R 755 /var/www/your_project/static/
    

    如果服务器开启了SELinux,临时关闭测试:sudo setenforce 0,若图片恢复加载,需添加SELinux规则:

    sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/your_project/static(/.*)?"
    sudo restorecon -Rv /var/www/your_project/static/
    
  • 查看浏览器控制台与Nginx日志
    打开浏览器开发者工具(F12)的Network标签,刷新页面查看图片请求的状态码:

    • 404:路径配置错误或文件实际不存在;
    • 403:权限不足;
    • 500:Nginx配置存在语法或逻辑错误。
      同时查看Nginx错误日志:tail -f /var/log/nginx/error.log,刷新页面后捕捉具体报错信息,定位问题根源。
  • 验证模板中静态资源引用是否正确
    确保模板文件开头加载了静态文件标签:{% load static %},图片引用使用正确格式:

    <img src="{% static 'images/your_image.jpg' %}" alt="示例图片">
    

    避免硬编码路径,确保引用路径与STATIC_ROOT下的文件结构一致。

  • 检查UFW防火墙规则
    执行sudo ufw status确认80(HTTP)和443(HTTPS)端口已被允许,静态资源通过Nginx提供,只要这两个端口开放即可,无需额外规则。

内容的提问来源于stack exchange,提问作者Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:15:00