# nginx 路由匹配指令 location 用法 {#nginx-路由匹配指令-location-用法}
本文总结 nginx 的路由匹配指令 location 的用法。location 指令用于匹配用户请求的 url,匹配后会进入对应的逻辑块,该逻辑块中可以指定一个静态网站,也可以是反向代理到某个服务等。location 指令有多种匹配规则,同时这些规则还有匹配优先级。
# 1. 匹配规则 {#_1-匹配规则}
# 1.1 精确匹配 {#_1-1-精确匹配}
修饰符: =
示例:
location = /abcd {
}
# 1.2 前缀匹配 {#_1-2-前缀匹配}
前缀匹配又包含 2 种情况:
-
有修饰符的前缀匹配
若使用修饰符^~, 则匹配优先级高于正则匹配,否则优先级最低。location ^~ /doc {
}
-
无修饰符的前缀匹配
location /doc {
}
# 1.3 按文件中顺序的正则匹配 {#_1-3-按文件中顺序的正则匹配}
正则匹配规则的书写顺序很重要,若某个路由地址同时匹配了多个正则规则,则启用第一个被匹配的规则。
正则匹配包含 2 种情况:
-
区分大小写的正则匹配
使用修饰符~location ~ ^/abcd$ {
}
-
不区分大小写的正则匹配
使用修饰符~*location ~* ^/abcd$ {
}
# 2. 匹配优先级 {#_2-匹配优先级}
若某个路由地址同时符合多个匹配规则时, 按如下优先级匹配:
- 精确匹配 =
- 有修饰符的前缀匹配 ^~(立刻停止后续的正则搜索)
- 按文件中顺序的正则匹配 ~或~*
- 无修饰的前缀匹配。