深色模式
Nginx location 指令
介绍
location
的主要作用是对请求路径进行匹配
分类:location
后面的uri,分为:
- 标准uri
- 正则uri
location 命令的参数
空
:标准uri,前缀匹配,从头开始匹配=
:标准uri,严格匹配,要求请求路径与uri完全相等^~
:标准uri,非正则匹配,当找到匹配度最高的location后,不再匹配带正则uri的location~
:正则uri,标识uri包含正则,(注意正则uri必须被标识)~*
:正则uri,标识uri包含正则,并且不区分大小写,(注意正则uri必须被标识)@
:定义一个命名location,定义的locaiton名字一般用在内部定向,例如error_page
,try_files
命令中。它的功能类似于编程中的goto
。
匹配规则
location 的匹配并不完全按照其在配置文件中出现的顺序来匹配,请求URI 会按如下规则进行匹配
- 先严格匹配
=
,精准匹配成功则会立即停止其他类型匹配; - 没有严格匹配成功时,进行前缀匹配。先查找带有
^~
的前缀匹配,带有^~
的前缀匹配成功则立即停止其他类型匹配,普通前缀匹配(不带参数^~
)成功则会暂存,继续查找正则匹配; =
和^~
均未匹配成功前提下,查找正则匹配~
和~*
。当同时有多个正则匹配时,按其在配置文件中出现的先后顺序优先匹配,命中则立即停止其他类型匹配;- 所有正则匹配均未成功时,返回步骤 2 中暂存的普通前缀匹配(不带参数
^~
)结果。
总结一下:
匹配时机顺序:
=
^~
空
(匹配成功会暂存,因为它的优先级比正则匹配要低)~
~*
匹配优先级:
=
^~
~
~*
空
(虽然优先级最低,但是匹配时机在正则匹配之前)