Django部署Nginx无法加载静态文件,URL出现internal-nginx-static前缀如何解决
结论
这个问题属于Nginx服务配置层面的问题,和你的Django项目代码无关,优先修改Nginx配置解决即可,不需要调整项目代码。
原因说明
你项目里配置的STATIC_URL为/static/,且同一份代码部署到其他站点运行正常,已经可以完全排除代码配置错误的可能。
这个internal-nginx-static-location_uat前缀是当前部署环境的Nginx规则额外加上的,常见触发场景有两种:
- 站点Nginx配置的静态资源路由规则写错,比如
rewrite重写规则、location别名配置多拼接了该前缀 - 你使用的容器化部署平台/云托管服务,默认给UAT环境的静态资源路由加了统一的前缀规则
解决步骤
优先方案(推荐):修改Nginx配置
- 找到当前站点对应的Nginx配置文件,通常存放在
/etc/nginx/conf.d/目录下,文件名为站点域名对应的.conf后缀文件 - 在配置文件中搜索关键词
internal-nginx-static-location_uat,定位到对应的路由规则 - 删除规则中额外添加前缀的冗余配置,修改完成后执行
nginx -t检查配置是否合法,确认没有报错后执行nginx -s reload重载配置即可生效
临时适配方案(仅当无Nginx修改权限时使用)
如果确实暂时拿不到服务器权限修改Nginx配置,可以临时调整Django的settings.py配置适配该前缀:
STATIC_URL = '/internal-nginx-static-location_uat/project_name/static/' MEDIA_URL = '/internal-nginx-static-location_uat/project_name/media/'
该方案只是临时兼容,后续换部署环境需要同步修改配置,不建议长期使用。
内容的提问来源于stack exchange,提问作者Kashyap Patel
相关产品推荐
相关产品推荐

