1.location匹配规则
访问到nginx的请求,可以对server做判断端口监听和域名匹配,一旦成功,就要根据uri地址比对location中的匹配规则,入门案例中使用的 / 算是通配逻辑,实际location有很多的匹配的细节
1.1匹配规则
- 精确匹配:uri地址必须等于location中定义的值
例如 location =/image
- 有修饰的字符串前缀匹配: uri地址以前缀开始
例如 location ^~/image
- 无修饰的字符串前缀匹配: uri地址以前缀开始
例如 location /image
- 和有修饰的区别在于 有修饰的前缀匹配可以指定多级前缀
例如: location ^~/image/haha/kaka
- 无修饰的前缀匹配不能指定多级前缀,只能一级
例如: location /image
- 正则匹配
- 不区分大小写的正则
例如:location ~*正则表达式
- 区分大小写正则
例如:location ~正则表达式
- 通配 /
例如:location /
不同匹配规则的存在使得同一个server括号内可以存在多个location
例如:
server{
location 1
location 2
location 3
…
}
1.2优先级判断
- 根据规则介绍顺序,优先级从上到下
- 精确匹配>有修饰的前缀>无修饰的前缀>正则匹配>通配
- 同一种匹配规则有包含关系时
- 有修饰的字符串前缀匹配有包含关系时,以最大前缀匹配长度为优先级最高来判断
- 正则有包含关系时,配置在上的location的优先级高