网站上用nginx非常广泛, 但是它的配置文件比较复杂, 这里讨论下nginx的location匹配规则.
约定熟成: []表示里面的参数能省略, <>表示里面的参数不能省略.
location的两种语法
第一种语法分为3个部分, 分别是: location关键字
+@name别名(name是自己取的名字)
+如何处理
, 这个语法很简单, 就是做内部跳转, 这里不讨论了.
location @name { ... }
第二种语法分为4个部分, 分别是: location关键字
+ 匹配方式符号(可省略)
+匹配规则
+如何处理
, 这个最复杂也是最常用, 我们只讨论这个.
location [ = | ~ | ~* | ^~ ] uri { ... }
普通匹配和正则匹配
这个语法的难点全部集中在[ = | ~ | ~* | ^~ ]
这里, 只要搞懂这个就能正确使用location.
[ = | ~ | ~* | ^~ ]
分为两种匹配模式, 分别是普通匹配和正则匹配.
普通匹配概述
=
: 这代表精准匹配全路径, 命中它后直接返回, 不再进行后续匹配, 优先级最高.
^~
: 这代表精准匹配开头, 命中开头后直接返回, 不再进行后续匹配, 优先级第二.
无匹配方式符号
: 这代表通用性匹