天天看点

Nginx之location匹配优先级一、匹配规则二、验证测试

一、匹配规则

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、匹配优先级验证

经验证优先级顺序从到到低为,正则表达式=,前缀匹配(最长匹配原则),正则表达式匹配,通用匹配。

Nginx之location匹配优先级一、匹配规则二、验证测试

3、调整正则表达式顺序

经测试,多个正则表达式时,按照配置文件上下顺序从上到下匹配,满足匹配条件退出查找。

Nginx之location匹配优先级一、匹配规则二、验证测试

继续阅读