nginx 配置多个root的优先级

问题描述

笔者在使用宝塔面板管理服务器,并创建了一个网站,之后在网站的nginx配置文件中添加了静态文件的访问规则,发现访问已有的文件一直显示404错误。


原因分析:

原先的配置文件如下:

在这里插入图片描述
访问文件发现一直显示404错误。排查想法是查找相应的错误日志,看nginx最终到磁盘的哪个路径下寻找文件,从而定位错误原因。
最初以为错误日志是在这个路径下
在这里插入图片描述

但是查看错误日志,发现只有请求的url错误信息,但是nginx具体是到哪个目录下去查找文件,这没有显示。
后来发现配置文件中还有这一段:
在这里插入图片描述
于是将两个log的路径修改为实际存在的路径,最终在错误日志中找到了具体的路径信息:
在这里插入图片描述
发现是去server下的root去寻找文件。
在这里插入图片描述
于是怀疑是否是root的优先级问题。
在Bing上搜索:
在这里插入图片描述
nginx配置文件 location段 匹配优先规则 附 root 和 alias 的区别这篇文章中,基本确认我们自己配置的root路径的优先级低于宝塔面板内置规则的优先级,即下面的配置优先级高:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }

解决方案:

参考宝塔中已有的配置,将我们原先的配置修改成下面这样:
在这里插入图片描述
即在原来的基础上加上 ~ ^,再次访问图片显示成功。


参考文章:

详情见文中超链接
文中除宝塔外,使用的SSH工具是WindTerm

本文如有侵权,请联系我删除,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值