编程教育资源分享平台

网站首页 > 后端开发 正文

Nginx Location深入了解匹配优先级的秘密#java面试

luoriw 2024-02-01 14:27:26 后端开发 9 ℃ 0 评论

哈喽朋友们大家好,今天讲一下ngx的匹配。大家看一下我现在这个目录,在肯飞鸽地里面这个目录,目录里面有一个默认的配置文件。打开默认的配置文件,大家可以看到这里配置了三个开胜的标签。第一个是杠adhtmr,第二个是波浪线加杠adhtmr,第三个是等于号加杠adhtml。

这三个是什么意思?第一个就是直接杠adhtmr,就是普通匹配波浪线杠adhtml是正则匹配,就是有波浪线。等于号adhtml表示精确匹配。在gx里面这三种匹配的优先级是等于号的优先级,就是精确匹配的优先级是最高的。其次到正则匹配,最后是普通匹配。

可以试一下,比如现在配置文件不变,不管是普通匹配还是正则匹配,a点去tml现在都是访问的就是uscrngxhtmlj目录下的idhtml文件,而我的精确匹配是查找的test下面的idhtml。

看一下这两个里面的内容,就是hdml里面有一个idhtml文件,可以看一下,这个内容就是idhtm,test里面也有个idhtm,看一下,它的内容就是前面多了个test。

再回到这边来看,根据刚才说的是精确匹配的优先级最高,就是会访问test下面的idhtm,也就是访问到的内容应该就是test,idh填满。现在从浏览器里面访问一下,这边就把它改成adhtml,可以看到确实是访问到了testadhtml,也就是明等于号的优先级是最高的。

现在比如把等于号去掉,再来看一下,比如注视掉,去掉之后就说现在这边就是有一个普通匹配和正则匹配,为了区分一下,把普通匹配比如目录改一下,改成杠test,按照刚才说的正则的优先级是高于普通的,也就是现在应该会访问到a点htm,而不会访问到test点a点htm。

现在来测试一下,把文件要保存一下,保存一下之后要重启一下,这个时候再刷新一下,因为这个是adhtml,可以看到它变成了adhtml了。为什么?可以看到现在这个,正则的优先级是高于普通匹配的,正则的目录就是HTMR里面的ADHTM,所以它就没有test。普通的目录就是优先级是最低的,如果这个时候把正则也注册掉,毫无疑问又会访问到普通匹配了test里面,来点去吧。

这个内容前面就会多一个test,再保存一下,重启一下,现在就只剩下一个普通匹配了,肯定是变成太死了。谢谢大家。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表
最新留言