Nginx Location匹配顺序

Posted quail2333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx Location匹配顺序相关的知识,希望对你有一定的参考价值。

理论部分

文字释义匹配规则如下:

略述:

1、nginx服务器首先在server块的多个location块中搜索是否有标准的uri和请求字符串匹配。如果有多个标准uri可以匹配,就匹配其中匹配度最高的一个location。

2、然后,nginx在使用location块中,正则uri和请求字符串,进行匹配。如果正则匹配成功,则结束匹配,并使用这个location处理请求;如果正则匹配失败,则使用标准uri中,匹配度最高的location。

详细:

1、如果有精确匹配,会先进行精确匹配,匹配成功,立刻返回结果。

2、普通匹配与顺序无关,因为按照匹配的长短来取匹配结果。

3、正则匹配与顺序有关,因为是从上往下匹配。(首先匹配,就结束解析过程)

4、在location中,有一种统配的location,所有的请求,都可以匹配

标识符匹配规则如下:

(location = uri ) > (location 完整路径 ) > (location ^~ 路径 ) > (location ~,~* 正则顺序 ) > (location 部分起始路径 ) > (location / )

操作案例部分

首先,我们把所有的规则写入nginx.conf,并重新读取nginx.conf然后开始实验,这次仍然借助echo-nginx-module进行,(echo-nginx-module配置过程向右看??echo-nginx-module的安装、配置、使用

location = /php.php 
            echo 精确匹配;

location ^~ /php/ 
            echo 标准匹配,仅前缀;

location ~ \\.(php) 
            echo 区分大小写,小写;

location ~ \\.(pHp) 
            echo 区分大小写,大写;

location ~* \\.(php)$ 
            echo 不区分大小写;
[[email protected] quail]# curl 192.168.249.132/php.php
精确匹配
[[email protected] quail]# curl 192.168.249.132/php/php.php
标准匹配,仅前缀
[[email protected] quail]# curl 192.168.249.132/pp.php
区分大小写,小写
[[email protected] quail]# curl 192.168.249.132/pp.pHp
区分大小写,大写
[[email protected] quail]# curl 192.168.249.132/php.pHP
不区分大小写

 

以上是关于Nginx Location匹配顺序的主要内容,如果未能解决你的问题,请参考以下文章

如何控制 NGINX 'Location' 指令匹配顺序?

nginx里面location的匹配规则和顺序

Nginx location指令匹配顺序规则

Nginx location指令匹配顺序规则

nginx配置location总结

nginx配置location方法总结