nginx之location配置

参考文章:

https://www.cnblogs.com/oskyhg/p/9323858.html

http://www.ttlsa.com/nginx/nginx-location-configure/

    nginx的url匹配模式很强大,同时使用非常灵活,尤其是优先级的匹配,如果不寻找规律,不但很难掌握,而且容易犯晕。了解优先级之前,先看看匹配的配置语法,以及都有那些匹配模式。

location模板

location [指令模式]  [URL匹配模式串] {

}

指定模式 

指令模式指用于匹配的方式,即精确匹配,前缀匹配还是正则匹配,当然这个是可选的,如果不写,则退化成正常匹配或者全匹配。

URL匹配模式串

URL匹配模式指的是需要匹配的URL的模式串,注意:/ 通用匹配,任何未匹配到其它location的请求都会匹配到,也就是最后的默认匹配

 

location 匹配语法(指令模式)  

location [=|~|~*|^~] /uri/ { … }

= 表示精确匹配,这个优先级也是最高的
^~ 前缀匹配,表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
~ 正则匹配,表示区分大小写的正则匹配
~* 正则匹配,表示不区分大小写的正则匹配(和上面的唯一区别就是大小写)
!~和!~* 正则匹配,分别为区分大小写不匹配及不区分大小写不匹配的正则

如下例子

#匹配通配符
location / {
    echo '/';
}
#精确匹配通配符
location = / {
    echo '=/';
}
#精确匹配字符串
location = /nginx {
    echo '=/nginx';
}
#以.gif|.jpg|.js结尾,区分大小写($ 后面可带参数 ?a=1)
location ~ \.(gif|jpg|js)$ {
    echo 'gif|jpg|js';
}
#以.png结尾,不区分大小写($ 后面可带参数 ?a=1)
location ~* \.png$ {
    echo 'png'
}

#访问如下
#curl http://www.test.com/
=/

#curl http://www.test.com/nginx
=/nginx

#curl http://www.test.com/1.gif
'gif|jpg|js'

#curl http://www.test.com/1.png
 'png'

大原则是关于匹配模式的优先级:

精确匹配  >  前缀匹配  >  正则匹配  > 正常匹配  > 全匹配

小细节则是同一优先级中:

  • 细节一:正则匹配成功之后停止匹配,非正则匹配成功还会接着匹配。

  • 细节二:在所有匹配成功的url中,选取匹配度最大的url字符地址。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值