nginx 的location之间有优先级吗
发布网友
发布时间:2022-04-20 22:25
我来回答
共2个回答
热心网友
时间:2022-04-23 09:29
location本身是不存在优先级的,但是按顺序右上及下依次执行的。也就是说,如果你定义了相同条件的location两次,先执行上面的,再执行下面的。举个例子
location ~ /abc/ { ... }
然后下面
location ~/abc/.+\.jpg {....}
这样的,当url为 /abc/123.jpg 时满足了这两个条件,那么先执行上面的,然后执行下面的。
热心网友
时间:2022-04-23 10:47
Location语法语法:location [=|~|~*|^~] /uri/ { … }
语法解释:
= 开头表示精确匹配
/和^~ 开头表示常规字符串
~ 开头表示区分大小写的正则匹配
~* 开头表示不区分大小写的正则匹配
!~ 和 !~* 分别为区分大小写不匹配及不区分大小写不匹配 的正则
多个location配置的情况下匹配顺序为:
1、首先匹配 =,其次匹配常规字符串, 其次是正则匹配。
2、精确匹配当有匹配成功的时候,停止匹配。
3、常规字符串匹配长度优先,越长优先级越高,其中以^~开头的匹配成功后不再进行正则匹配;/ 任何请求都会匹配到;nginx 不对 url 做编码,因此请求为 /static/20%/aa,可以被规则 ^~ /static/ /aa 匹配到(注意是空格)。
4、正则匹配当有匹配成功时候,停止匹配,按当前匹配规则处理请求。