Nginx Location匹配顺序

理论部分

文字释义匹配规则以下:

略述:

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

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

详细:

一、若是有精确匹配,会先进行精确匹配,匹配成功,马上返回结果。nginx

二、普通匹配与顺序无关,由于按照匹配的长短来取匹配结果。服务器

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

四、在location中,有一种统配的location,全部的请求,均可以匹配url

标识符匹配规则以下:

(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 '不区分大小写';
[root@www quail]# curl 192.168.249.132/php.php
精确匹配
[root@www quail]# curl 192.168.249.132/php/php.php
标准匹配,仅前缀
[root@www quail]# curl 192.168.249.132/pp.php
区分大小写,小写
[root@www quail]# curl 192.168.249.132/pp.pHp
区分大小写,大写
[root@www quail]# curl 192.168.249.132/php.pHP
不区分大小写
相关文章
相关标签/搜索