一、匹配规则
1、语法规则
location 匹配规则
语法规则
location [=||*|^~] /uri/ { … }
2、含义解释
模式 含义
location = /uri = 表示精确匹配,只有完全匹配上才能生效
location ^~ /uri ^~ 开头对URL路径进行前缀匹配,并且在正则之前。
location ~ pattern 开头表示区分大小写的正则匹配
location ~* pattern 开头表示不区分大小写的正则匹配
location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后
location / 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default
3、优先级说明
首先精确匹配 =
其次前缀匹配 ^~
其次是按文件中顺序的正则匹配
然后匹配不带任何修饰的前缀匹配。
最后是交给 / 通用匹配
当有匹配成功时候,停止匹配,按当前匹配规则处理请求
二、验证测试
1、模拟配置
#vim test.conf,将如下配置写入test.conf
#nginx -t,检查配置,如果报错无法识别echo,可以参照https://blog.csdn.net/carefree2005/article/details/110929761连接安装echo模块
#nginx -s reload ,是配置生效
server{
listen 80;
server_name 192.168.0.123 ;
access_log /var/log/nginx/www.access.log;
error_log /var/log/nginx/www.error.log;
large_client_header_buffers 4 16k;
location = /login {
echo “匹配正则表达式=”;
}
location ^~ /login {
echo “匹配前缀匹配短”;
}
location ^~ /login/files {
echo “前缀匹配长”;
}
location ~ .(gif|jpg|png|js|css|.gin)$ {
echo “匹配区分小写的正则规则”;
}
location ~* .png|.gin$ {
echo “匹配不区分小写的正则规则”;
}
location / {
echo “匹配通用匹配”;
}
}
2、匹配优先级验证
经验证优先级顺序从到到低为,正则表达式=,前缀匹配(最长匹配原则),正则表达式匹配,通用匹配。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9ElT3FkaNxmVtNWbW12Yo5kMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0czM2ITOwUTMwEjMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
3、调整正则表达式顺序
经测试,多个正则表达式时,按照配置文件上下顺序从上到下匹配,满足匹配条件退出查找。