Location学习
Location写法
location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
1. 没有修饰符 表示:必须以指定模式开始
Server{
Server_name mao.com;
Location /abc{…}
}
Mao.com/abc /abc?a=1 /abc/ /abcde 都可以进入该location
2. 有修饰符 “=” 表示:必须与指定的模式精确匹配
Server{
Server_name mao.com;
Location = /abc{…}
}
Mao.com/abc /abc?a=1 可以进入该location
/abc/ /abcde 不可以进入该location
3. 有修饰符 “~” 表示:指定的正则表达式要区分大小写
Server{
Server_name mao.com;
Location ~ ^/abc$ {…}
}
Mao.com/abc /abc?a=1 可以进入该location
/abc/ /ABC /abcde 不可以进入该location
4. 有修饰符 “~*” 表示:指定的正则表达式不区分大小写
Server{
Server_name mao.com;
Location ~* ^/abc$ {…}
}
Mao.com/abc /abc?a=1 /ABC 可以进入该location
/abc/ /abcde 不可以进入该location
5. 有修饰符 “^~” 表示:类似于无修饰符的行为,也是以指定模式开始,不同的是,如果模式匹配,那么久停止搜索其他模式
6. 有修饰符 “@” 表示:定义命名location区段,这些区段客户端不能访问,只可以有内部产生的请求来访问,如error-page等
查找顺序和优先级
1. 带有“=”的精确匹配优先
2. 没有修饰符的精确匹配
3. 正则表达式按照他们在配置文件中定义的顺序
4. 带有“^~”修饰符的开头匹配
5. 带有“~”或“~*”修饰符的,如果正则表达式于uri匹配
6. 没有修饰符的,如果指定字符串于uri开头匹配