Nginx服务器会首先会检查多个location中是否有普通的uri匹配,如果有多个匹配,会先记住匹配度最高的那个。然后再检查正则匹配,这里切记正则匹配是有顺序的,从上到下依次匹配,一旦匹配成功,则结束检查,并就会使用这个location块处理此请求。如果正则匹配全部失败,就会使用刚才记录普通uri匹配度最高的那个location块处理此请求。
我对这个多个匹配不太懂
location /bokeyuan{
return 100;
}
location = /boke {
return 101;
}
location ^~ /bokeyy {
return 104;
}
location ~* ^/bo$ {
return 104;
}
比如我访问/bokey 那我这里的最长匹配应该是第一条把 因为匹配的最接近 也就是
location /bokeyuan{
return 100;
}
然后去正则 匹配 发现正则不符合 那应该就是命中这个 return 100吧 但是为何是404 not found
location
里面的规则要全部匹配上才算命中= /juejin
这个是精确匹配,uri都对不上,匹配不成功^~ ^/jue$
这个是模糊匹配,非正则匹配,写个正则在这里匹配不到然后剩下的正则,都匹配不上
忽然发现题目改了....
这里再说一下,要全部匹配上才算命中,没有说匹配规则的一部分就算命中的
最长匹配是指,多条命中的情况下,取最长的那个,在同一优先级内有效,比如说有下面两条规则
/abc
/abcdefg
然后访问
/abcdefg
,这就是两条规则都命中,然后取第二个,如果访问/abcd
就只命中了第一条。