location模块
- 一类是指定URL地址:
location [ = | ~ | ~* | ^~ ] uri {
}
- 另一类则是指定自定义名称(这里不做介绍)
location @name {
...
}
location匹配优先级
1、字符串匹配类型,如location / {}(表示任何以/开头的URL都匹配)或location /user {},只不过找到合适了还会继续往下找,直到找到最长匹配.
2、= 类型,精确匹配
3、^~ 类型,前缀匹配,不支持正则,如果该符号后面的字符匹配被匹配上,则被默认为最佳匹配,不再继续往下查找
4、~ 和 ~* 类型,正则匹配,~区分大小写,~*不区分大小写
location匹配过程
location匹配过程:
1、首先先检查使用字符串匹配定义的location,选择最长匹配的项并记录下来
2、如果找到了精确匹配的location,也就是使用了=修饰符的location,结束查找,使用它的配置。如果没有找到合适精确匹配,则继续往下查找
3、如果找到了包含的前缀匹配,则停止查找,使用它定义的配置。如果没有找到合适的带^~符号的前缀匹配,则继续往下查找
4、如果找到了使用正则定义的location,则停止查找,使用它定义的配置。如果没有找到合适的正则匹配,则继续往下查找
5、使用前面记录的最长匹配前缀字符location。