「Nginx」-Nginx location 匹配规则详解
Nginx 中主要通过location来匹配请求规则,它也是区分匹配优先级的,但很多同学对此比较迷糊,本节就来详细介绍一下Nginx location的规则。
Nginx location 语法规则
location [=|~|~*|^~] /uri/ { .... }
Nginx location 模式说明

Nginx location 模式含义
乍一看是不是有点似懂非懂的感觉?没关系,我们来举例详细说明一下,加深印象与理解。
# 精确匹配URL为 /abc 的请求 location = /abc { .... }
http://xxx.com/abc 可以访问;
http://xxx.com/abc?args=123 可以访问;
http://xxx.com/abc/ 报404错误;
http://xxx.com/abc/def 报404错误;
# 精确匹配URL为 /abc/ 的请求 location = /abc/ { .... }
http://xxx.com/abc 报404错误;
http://xxx.com/abc?args=123 报404错误;
http://xxx.com/abc/ 可以访问;
http://xxx.com/abc/?args=123 可以访问;
http://xxx.com/abc/def 报404错误;
# 匹配URL以 /abc 开头的请求(在正则匹配之前) location ^~ /abc { .... }
http://xxx.com/abc 可以访问;
http://xxx.com/abc/def 可以访问;
# 正则匹配URL以 /efg 开头的请求,且URL区分大小写 location ~ /abc { .... }
http://xxx.com/efg 可以访问;
http://xxx.com/efG 报404错误;
# 正则匹配URL以 /efg 开头的请求,且URL不区分大小写 location ~* /abc { .... }
http://xxx.com/efg 可以访问;
http://xxx.com/efG 可以访问;
Nginx location 匹配优先级
- 首先精确匹配 =
- 其次前缀匹配 ^~
- 其它按location定义的顺序进行正则相关匹配
- 然后匹配不带任何修饰的前缀匹配
- 以上都匹配不到时,交给 / 通用匹配
当有规则与之匹配时,就会按当前规则进行处理,并停止匹配了。