Nginx location 学习

location的基本语法

location [ = | ~ | ~* | ^~ ] uri { ... }

模式含义
location = /uri= 表示精确匹配,只有完全匹配上才能生效
location ^~ /uri^~ 开头对URL路径进行前缀匹配,并且在正则之前。
location ~ pattern开头表示区分大小写的正则匹配
location ~* pattern开头表示不区分大小写的正则匹配
location /uri不带任何修饰符,也表示前缀匹配,但是在正则匹配之后
location /通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default

多个location配置的情况下的匹配顺序

  1. 首先精确匹配 =
  2. 其次前缀匹配 ^~
  3. 其次是按文件中顺序的正则匹配
  4. 然后匹配不带任何修饰的前缀匹配。
  5. 最后是交给 / 通用匹配
  6. 当有匹配成功时候,停止匹配,按当前匹配规则处理请求

例子

location  =/ {
    #规则A
    return 601;
}        

location  / {
    #规则B
    return 602;
}        

location /documents/ {
    #规则C
    return 603;
}

location ~ /documents/Abc {
    #规则D
    return 604;
}

location ^~ /images/ {
    #规则E
    return 605;
}
        
location ~* \.(gif|jpg|jpeg)$ {
    #规则F
    return 606;
}
        
location /images/abc {
    #规则G
    return 607;
}

location ~ /images/abc/ {
    #规则H
    return 608;
}

按照上面的匹配规则,匹配的效果如下

/601精确完全匹配,即使/index.html也匹配不了
/login/login.html602匹配B以后,往下没有任何匹配
/documents/document.html603匹配C以后,往下没有任何匹配
/documents/Abc.jpg604最长匹配到C,往下正则顺序匹配到D,不会往下到F
/images/1.gif605最长匹配到E,不会往下到F
/photo/screen.jpg606匹配F以后,往下没有任何匹配
/images/abc.jpg606正则匹配优先于不带任何修饰的前缀匹配,匹配F以后,不会往下到H
/images/abc.html607匹配H以后,往下没有任何匹配
/images/abc/test.png608正则匹配优先于不带任何修饰的前缀匹配,匹配H以后,往下没有任何匹配

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值