「Nginx」-Nginx location 匹配规则详解

100人浏览   2025-04-06 01:02:51

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定义的顺序进行正则相关匹配
  • 然后匹配不带任何修饰的前缀匹配
  • 以上都匹配不到时,交给 / 通用匹配

当有规则与之匹配时,就会按当前规则进行处理,并停止匹配了。

相关推荐