深色模式
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 中暂存的普通前缀匹配(不带参数
^~)结果。
总结一下:
匹配时机顺序:
=^~空(匹配成功会暂存,因为它的优先级比正则匹配要低)~~*
匹配优先级:
=^~~~*空(虽然优先级最低,但是匹配时机在正则匹配之前)
