nginx的匹配规则顺序问题

2022/7/15 5:21:36

本文主要是介绍nginx的匹配规则顺序问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

nginx的匹配规则 location 分为两部分 前缀 和 文字字符  两部分

 

如: 

location = /hello { 
  }
"="  就是前缀 
"/hello" 就是字符  

 

用一个例子来说明匹配顺序,

nginx的配置信息是这样的: 

1.location  =  / {

...

}

2.location    /hello {

...

}

3. location    /hello/abc {

...

}

4.location   ~*  /hello {

...

一、访问 / 时  这时精准匹配了 配置  1

二、访问  /hello和/hello/abc都会匹配到配置4

(因为在访问/hello路径时,最长匹配到/hello的location,这是记录改location,然后进行正则匹配,找到配置4的location进行匹配,如果不存在配置4则匹配配置2)

  (在访问/hello/abc也是一样的匹配规则,先记录配置3在进行正则匹配到配置4)

如果想让 配置2直接匹配/hello,那么可以通过在配置2中加入前缀  “ ^~ ”  ,  这样在匹配到配置2的时候就直接匹配了,不会走正则。

 

总结:

1.首先检查文字字符串,如果访问路径匹配到对应的文字字符,且前缀为 “ = ”,匹配并结束。

2. 如果匹配的路径有前缀 "^~", 匹配并结束。

3. 匹配最长的文本字符并记录,然后进行正则匹配,若存在正则匹配,匹配第一个结束,若不存在则匹配最长文本字符的路径。




这篇关于nginx的匹配规则顺序问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程