概述
nginx location匹配是按照一定的规则优先级来进行的,就像运算符有优先级一样,所以并不是按照配置书写顺序来匹配的。具体优先级如下:
第一优先级:等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
第二优先级:^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
第三优先级:正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
第四优先级:常规字符串匹配类型。按前缀匹配。
(location =
) > (location 完整路径
) > (location ^~ 路径
) > (location ~,~* 正则顺序
) > (location 部分起始路径
) > (/
)
location表达式类型:
~ 表⽰执⾏⼀个正则匹配,区分⼤⼩写
~* 表⽰执⾏⼀个正则匹配,不区分⼤⼩写
^~ 表⽰普通字符匹配。使⽤前缀匹配。如果匹配成功,则不再匹配其他location。
= 进⾏普通字符精确匹配。也就是完全匹配。
@ "@" 定义⼀个命名的 location,使⽤在内部定向时,例如 error_page, try_files
location uri正则表达式
.
:匹配除换行符以外的任意字符?
:重复0次或1次+
:重复1次或更多次*
:重复0次或更多次d
:匹配数字^
:匹配字符串的开始$
:匹配字符串的结束{n}
:重复n次{n,}
:重复n次或更多次[c]
:匹配单个字符c[a-z]
:匹配a-z小写字母的任意一个(a|b|c)
: 属线表示匹配任意一种情况,每种情况使用竖线分隔,一般使用小括号括括住,匹配符合a字符 或是b字符 或是c字符的字符串反斜杠:用于转义特殊字符
- 小括号()之间匹配的内容,可以在后面通过
$1
来引用,$2
表示的是前面第二个()里的内容。正则里面容易让人困惑的是转义特殊字符。
优先级搜索问题:
不同类型的location映射决定是否继续向下搜索,等号类型、^~类型:一旦匹配上就停止搜索了,不会再匹配其他location了正则表达式类型(~ ~*),常规字符串匹配类型/xxx/ : 匹配到之后,还会继续搜索其他其它location,直到找到优先级最高的,或者找到第一种情况而停止搜索。
最后
以上就是跳跃小丸子为你收集整理的nginx location配置规则的全部内容,希望文章能够帮你解决nginx location配置规则所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复