-
Notifications
You must be signed in to change notification settings - Fork 957
Matcher
VeryNginx 会收到各种各样的Http请求,当我们定义一条规则(Action)的时候,我们可能会需要限定,这条规则只对一部分请求起作用,Matcher 就是匹配器,用来描述哪一部分 Http 请求是规则的目标。
一个 Matcher 可以包含一个或者多个约束条件,当某个请求没有违背 Matcher 中任何一条约束时,就认为这个请求匹配上了这个Matcher。
如果Matcher是空的,即没有包含任何条件,那么这个Matcher会匹配上所有的请求
目前支持以下几种约束:
Client IP
客户端IP,对应Nginx变量 remote_addr
支持的匹配方式:
- 等于某个IP
- 不等于某个IP
Host
客户访问时使用的域名,对应Nginx变量 host
支持的匹配方式:
- 等于某个字符串
- 不等于某个字符串
- 符合某个正则表达式
- 不符合某个正则表达式
UserAgent
用户浏览器的UserAgent字段,对应Nginx变量 http_user_agent
一些通过工具发起的请求可能会有特别的UserAgent,或者没有这个字段,也可能伪造成普通的浏览器
支持的匹配方式:
- 等于某个字符串
- 不等于某个字符串
- 符合某个正则表达式
- 不符合某个正则表达式
- 为空,即Http头中没有这个字段
URI
请求路径,对应Nginx中的变量 uri
,表示访问地址中域名之后的部分
例如访问 http://www.abc.com/test/book.html 时,uri值为 /test/book.html
支持的匹配方式:
- 等于某个字符串
- 不等于某个字符串
- 符合某个正则表达式
- 不符合某个正则表达式
Referer
请求来源网页,对应Nginx中的变量 http_referer
,表示访问者的来源页面。
支持的匹配方式:
- 等于某个字符串
- 不等于某个字符串
- 符合某个正则表达式
- 不符合某个正则表达式
- 为空,即Http头中没有这个字段
Request Args
请求参数匹配
VeryNginx可以智能的从uri字符串后面,以及请求体(body)内提取参数的值
注:目前只支持在请求的content-type为application/x-www-form-urlencoded时,从请求体内提取参数
这个条件可以输入两个字段,name 和 value。name是可选的,如果输入name,则只把符合name条件的参数值和value作匹配;如果不输入name,就会把所有的参数值拿来和value进行匹配
支持的匹配方式:
- 等于某个字符串
- 不等于某个字符串
- 符合某个正则表达式
- 不符合某个正则表达式