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

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

好了,到此就讲解完毕了,网络圈只捡重要的讲,其实还有一些小细节等大家遇到再去查资料,否则很容易把自己弄晕。

如果觉得本节有收获,大家可以关注支持一下我哦 ~