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
不区分大小写

原文地址:https://www.cnblogs.com/quail2333/p/11181747.html

时间: 2024-08-05 00:03:45

Nginx Location匹配顺序的相关文章

【转】nginx location匹配规则

转载请保留:http://www.nginx.cn/115.html location匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写~*    #表示执行一个正则匹配,不区分大小写^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录=      #进行普通字符精确匹配@     #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files location 匹配的优先级(与

nginx location 匹配规则

location匹配规则 ~             #波浪线表示执行一个正则匹配,区分大小写 ~*           #表示执行一个正则匹配,不区分大小写 !~和!~*    #分别为区分大小写不匹配及不区分大小写不匹配 ^~           #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 =             #进行普通字符精确匹配 @            #"@" 定义一个命名的 location,使用在内部定向时,例如 er

nginx location匹配及rewrite规则

location匹配规则 1. 实例 server{ location = \ { [配置A] } location / { [配置B] } location = /images/ { [配置C] } location ^~ /static/{ [配置D] } localtion ~* \.(gif|jpg|png){ [配置E] } } 2. location语法规则 语法: location = | ~ | ~* | ^~ | @ /url/{ //注意 =.~.~*.^~ .@是locat

nginx location匹配规则

location匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写 ~* #表示执行一个正则匹配,不区分大小写 ^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 = #进行普通字符精确匹配 @ #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files location = / { # 只匹配"/". [ configuration A ] } location /

nginx location 匹配

location 有三种匹配方式 location = part {} 精准匹配location part {}  一般匹配location ~ part {} 正则匹配 如果多个location同时满足条件,优先匹配:精准,正则,普通 location的命中过程是: 先看有没有 精准匹配,如果有,就直接返回了:如果没有,接着取找普通匹配,注意,普通匹配可能有多个匹配成功,记录匹配最长的一个(注意:是记住不是立即返回),接下来去看有没有正则匹配到的, 如果有(如果没有,就返回之前记录的普通匹配最

Nginx之location匹配规则(个人总结)

Location匹配的url的语法规则: syntax: location [=|~|~*|^~|@] /uri/ { - } default: no context: server=            表示精确匹配 ^~             表示普通字符匹配,不继续匹配正则,一般用来匹配目录 ~            表示区分大小写的正则匹配 ~*              表示不区分大小写的正则匹配 !~ 和!~*       分别表示区分大小写和不区分大小写不匹配的正则 @    

nginx location 规则优先级

一 nginx  location 匹配命令 ~   #表示执行一个正则匹配,区分大小写 ~*  #表示执行一个正则匹配,不区分大小写 ^~  #表示普通字符匹配,如果该选项匹配,只匹配该选项, 不匹配别的选项,一般用来匹配目录 =   #进行普通字符精确匹配 二 nginx location 匹配优先级(与location在配置文件中的顺序无关) 1=  精确匹配.如果发现精确匹配,nginx停止搜索其他匹配模式. 2    普通字符匹配,正则表达式规则和长的块规则将被优先和和查询匹配,也就是

nginx location详解

Location block 的基本语法形式是: location [=|~|~*|^~|@] pattern { ... } [=|~|~*|^~|@] 被称作 location modifier ,这会定义 Nginx 如何去匹配其后的 pattern ,以及该 pattern 的最基本的属性(简单字符串或正则表达式) location modifier 1.= Example: server { server_name website.com; location = /abcd { [-]

Nginx location 正则篇

location 前缀 没有前缀               匹配以指定模式开头的location =                          精准匹配,不是以指定模式开头 ~                          正则匹配,区分大小写 ~*                         正则匹配,不区分大小写 ^~                         非正则匹配,匹配以指定模式开头的location location匹配顺序 多个正则location直接按书