1、优先级规则
优先级由低到高依次是:
普通匹配 < 长路径匹配 < 正则匹配 < 短路匹配 < 精确匹配
1)普通匹配
浏览器地址栏中的访问路径均为如下形式,不变。
下面的匹配规则是:只要请求是以/xxx 开头的路径就可命中。
2)长路径匹配
当一个请求路径既可以与一个长路径相匹配,又可以与一个短路径相匹配时,长路径优先级高。配置如下,请求路径不变
此时访问结果为,返回的为401,匹配的是长路径。
3)正则匹配
在正则匹配与普通匹配(长路径匹配也属于普通匹配)均可匹配上时,正则匹配的优先级高。
A、区分大小写的正则匹配
~表示这里是正则表达式,默认匹配是区分大小写的。
在长路径匹配与正则匹配间,仍然是正则匹配的优先级要高于长路径匹配的,即使正则匹配的要短于长路径匹配的。
配置如上,请求路径不变,此时匹配的是正则表达式的路径,返回的是402
当请求中的 XXX 写为大写字母,会报 404 找到资源。
B、 不区分大小写的正则匹配
~后跟上*号,表示这是不区分大小写的正则表达式
此时就可以正常访问到了。
4)短路匹配
以^~开头的匹配路径称为短路匹配,表示只要匹配上,就不再匹配其它的了,即使是正则匹配也不再匹配了。即其优先级要高于正则匹配的。如下设置,要注释掉上面401的location,因为其与短路匹配路径一样,如果不注释掉,配置文件会报错。
此时重新访问,返回的是403,说明短路匹配的优先级要高于正则匹配。
5)精确匹配
以等号(=)开头的匹配称为精确匹配,其是优先级最高的匹配。
此时访问需要注意,浏览器的uri最后是不能带有/的。如果带有/返回的还是403。