Nginx部署静态文件时出现static/media目录重复引用无法访问问题
问题原因
你出现路径重复拼接的核心原因是混淆了Nginx中root和alias指令的用法:root指令会把完整的location匹配路径追加到指定的根目录后面,你配置location /static/搭配root /home/briansia/django_blog/static/时,访问/static/blog/main.css,Nginx拼接出来的路径就是/home/briansia/django_blog/static/ + /static/blog/main.css,自然就出现了两层static目录,media路径的报错逻辑同理。
修复方案(两种二选一即可)
方案1:将location块的root替换为alias
alias指令只会将location匹配路径之后的部分追加到指定目录后,是静态资源独立路径配置的常用方案:
location /static/ { alias /home/briansia/django_blog/static/; } location /media/ { alias /home/briansia/django_blog/media/; }
修改后执行nginx -t检查配置语法无误,再执行nginx -s reload重载配置即可生效。
方案2:调整root路径为上层目录
因为你server块已经配置了全局root为/home/briansia/django_blog,可以直接调整static和media location块的root配置和全局一致即可:
location /static/ { root /home/briansia/django_blog; } location /media/ { root /home/briansia/django_blog; }
这种方式Nginx会自动把/static/路径拼到指定root后面,得到的就是正确的/home/briansia/django_blog/static/xxx路径。
验证步骤
重载配置后清除浏览器缓存访问静态资源,查看nginx-error.log没有新的路径不存在报错即为修复成功。
内容的提问来源于stack exchange,提问作者disguisedtoast
相关产品推荐
相关产品推荐

