Nginx-Location匹配规则

修饰符

官方文档
Location大致有5种修饰符

修饰符含义优先级
=精确匹配(必须全部相等)1
^~只需匹配uri部分,不支持正则表达式2
~大小写敏感(正则表达式)3
~*忽略大小写(正则表达式),这里要注意忽略大小写的意思是请求的字符大小写都可以,但是不会进行大小转换,请求的大小写对应的文件必须存在。4
/通用匹配,任何请求都会匹配到5
@内部服务跳转
修饰符案例

接下来就对着几种修饰符进行判断优先级

# 通过配置return来返回数据,进行测试(匹配规则为"=">"^~">"~*">"~">/)
        # 正常的匹配
        location / {
           return 200 "this is $request_uri \n";
        }
        # 精准匹配(优先级高于/)
        location = /q/aaa {
           return 200 "this is = $request_uri \n";
        }
        # 模糊匹配
        location ~ \.(jpg|png)$ {
           return 200 "this is ~ \.jpg \n";
        }
        # 如果"~*"该匹配规则在"~"上面,那么"~"就失效了,所有的相关配置都会被"~*"拦截
        location ~* \.(jpg|png)$ {
           return 200 "this is ~* \.jpg \n";
        }
        # ^~ 只会匹配/下的images,访问路径中如果出现类似/aaa/images,是不会被该匹配规则获取的
        location ^~ /images {
           return 200 "this is ~* /images \n";
        }
        

# 测试
[root@node-3 conf]# curl 127.0.0.1/q/aaa
this is = /q/aaa
[root@node-3 conf]# curl 127.0.0.1/das
this is /das 
[root@node-3 conf]# curl 127.0.0.1/1.jpg
this is ~ \.jpg 

# 匹配.jpg和.png结尾的,~会优先获取到,但是如果是大写的,那么就是/先匹配到
[root@node-3 conf]# curl 127.0.0.1/1.JPG
this is /1.JPG 

# 可以在location中配置匹配~*来忽略大小写
[root@node-3 conf]# curl 127.0.0.1/1.JPg
this is ~* \.jpg

# 一下三个是location配置^~后的效果
[root@node-3 conf]# curl 127.0.0.1/images/1.jpg
this is ^~ /images 
[root@node-3 conf]# curl 127.0.0.1/aa/images/dszxc/1.jpg
this is ~* \.jpg 
[root@node-3 conf]# curl 127.0.0.1/aa/images/dszxc/1
this is /aa/images/dszxc/1 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值