#每天都是崭新的一天#再累也要照顾好自己

【nginx系列】nginx的location匹配规则及优先级

一、Location匹配规则 

语法规则: 【= | ^~ | ~ | ~* | / | /uri 】

(1) location = /uri                 = 表示精确匹配,只有完全匹配上才能生效,若找到,停止搜索; 

(2)location ^~ /uri               ^~开头表示对URL路径进行前缀匹配,并且在正则匹配之前,若找到,停止搜索; 

(3)location ~ pattern           ~开头表示区分大小写的正则匹配,按配置文件顺序匹配; 

(4)location ~* pattern          ~*开头表示不区分大小写的正则匹配,按配置文件顺序匹配; 

(5)location .*                        匹配任意字符,.匹配任意字符,*匹配数量0到正无穷;

(6)location /uri                    不带任何修饰符,表示前缀匹配,在正则匹配之后; 

(7)location /                        通用匹配,任何未匹配到其他location的请求都会匹配到,相当于default; 


二、多个location配置的情况匹配顺序

(1)首先精确匹配 = ;

(2)其次前缀匹配 ^~;

(3)其次是按照配置文件中的正则匹配; 

(4)然后匹配不带任何修饰符的前缀匹配; 

(5)最后交给/通用匹配; 



三、我们来看例子

加入我有这两个路径:

/data/nginx/image/exact/

/data/nginx/image/regex/

1、第一种情况这么写

location  /image/ {
            alias /data/nginx/image/exact/;
        }
location ~ ^/image/(.*\.html)$ {
        alias /data/nginx/image/regex/$1;
}

我们发现这两个路径都是正则生效,因为 /url 这个不带任何修饰符,在正则匹配之后


2、第二种情况这么写

location  ^~ /image/ {
            alias /data/nginx/image/exact/;
        }
location ~ ^/image/(.*\.html)$ {
        alias /data/nginx/image/regex/$1;
}

我们发现执行都是精确匹配exact。因为^~开头的前缀匹配,在正则匹配之前


感谢你的阅读,本文由 sau交流学习社区 版权所有。
如若转载,请注明出处:sau交流学习社区-power by saucxs(程新松)(/page/788.html)
交流咨询
    官方QQ群
    群号663940201,欢迎加入!
    sau交流学习社区交流群

微信群
欢迎加入微信群
微信公众号
欢迎关注微信公众号

图文推荐

微信群
saucxs聊天机器人
saucxs
hi ,欢迎来到sau交流学习社区,欢迎与我聊天,问我问题哦!
您正在使用的浏览器是,不在支持范围内!
为了您的正常使用与展示,推荐使用Chrome浏览器68以上版本
支持浏览器:
火狐浏览器最新版
Safari浏览器最新版
Edge浏览器最新版
IE浏览器10,11