一、使用匹配条件
你可以使用规则的匹配条件指定规则的生效范围,控制防护例外规则、自定义规则、速率限制、自定义 Bot 规则的生效范围。
注意:说明:
注意:当配置了多个匹配条件时,规则仅在全部匹配条件都满足时生效。
二、匹配方式
当匹配字段和匹配内容满足匹配方式要求时,匹配条件成立。
注意:说明:
注意:请求头部的匹配字段(例如:Referer 头部、自定义头部等)使用等于、不等于、包含、不包含、通配符匹配、通配符不匹配、正则匹配方式时,仅当该头部存在且不为空时才能满足匹配条件。
| 匹配方式 | 匹配方式说明 |
| 等于(在列表中) | 匹配内容列表中,包含匹配字段的完整字符串,不区分大小写。匹配内容可配置多个匹配字段,当匹配字段匹配任一值时,即满足匹配条件。 |
| 不等于(不在列表中) | 匹配内容列表中,不包含匹配字段的完整字符串,不区分大小写。匹配内容可配置多个值,当所有值均不匹配匹配字段时,即满足匹配条件。 |
| 包含(关键字) | 匹配字段字符串中,包含了匹配内容列表中的任一的完整字符串内容,不区分大小写。匹配内容可配置多个值,当任一值在匹配字段中出现时,即满足匹配条件。 |
| 不包含(关键字) | 匹配字段字符串中,不包含匹配内容列表中的任一的完整字符串内容,不区分大小写。匹配内容可配置多个值,当所有值均不在匹配字段中出现时,即满足匹配条件。 |
| 通配符匹配 | 匹配内容列表中,包含可通配匹配字段的字符串,不区分大小写。支持通配的字符有:星号*:匹配零个或多个字符。问号?:匹配一个字符。匹配内容可配置多个通配符表达式,当匹配字段匹配任一通配符表达式时,即满足匹配条件。匹配内容中未包含通配符时,该匹配字段按完整匹配方式进行判断。 |
| 通配符不匹配 | 匹配内容列表中,不包含可通配匹配字段的字符串,不区分大小写。支持通配的字符有:星号*:匹配零个或多个字符。问号?:匹配一个字符。匹配内容可配置多个通配符表达式,当匹配字段与所有通配符表达式都不匹配时,即满足匹配条件。匹配内容中未包含通配符时,该匹配字段按完整匹配方式进行判断。 |
| 长度大于 | 匹配字段存在,且数据长度(按字符串包含字符数计)大于指定长度。 |
| 长度小于 | 匹配字段存在,且数据长度(按字符串包含字符数计)小于指定长度。 |
| 内容为空 | 匹配字段存在,且为空字符串 |
| 不存在 | 匹配字段不存在。 |
| 正则匹配 | 匹配字段数据可满足匹配内容中的正则表达式。 |
三、匹配条件选项及说明
注意:说明:
注意:1. 支持配置的匹配条件,根据规则类型和你订阅的 EdgeOne 套餐有些区别。具体支持情况请参考套餐选型对比。
注意:2. 单条规则中所有匹配内容中,匹配项目数量总和不超过 128 个(包括同时匹配多个值的匹配条件)。
| 匹配条件选项 | 匹配条件说明 |
| 请求客户端 IP | 匹配请求的来源 IP 地址。支持基于地域、ASN、IP 和 CIDR 网段进行匹配。使用匹配、不匹配逻辑符号选项时,可匹配客户端 IP 、CIDR 网段和 IP 分组。单个匹配条件最多可配置8个 IP 分组。使用地域包含、地域不包含逻辑符号选项时,可匹配客户端 IP 的归属地域。使用 ASN 归属、ASN 归属不等于逻辑符号选项时,可匹配客户端 IP 所归属的 BGP 自治系统编号(ASN)。 |
| 请求客户端 IP(优先匹配 XFF 头部) | 当请求携带合法 XFF(X-Forwarded-For)头部时,匹配请求 XFF 头部第一个 IP;否则,匹配请求来源 IP 地址。使用匹配、不匹配逻辑符号选项时,可匹配客户端 IP 、CIDR 网段和 IP 分组。单个匹配条件最多可配置 8 个 IP 分组。使用地域包含、地域不包含逻辑符号选项时,可匹配客户端 IP 的归属地域。使用 ASN 归属、ASN 归属不等于逻辑符号选项时,可匹配客户端 IP 所归属的 BGP 自治系统编号(ASN)。 |
| 自定义请求头部 | 匹配请求的指定头部,提供额外参数选项匹配特定名称的头部值。忽略大小写。支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。说明:暂不支持匹配 Content-Length 头部1。 |
| 请求 URL | 匹配请求的 URL。例如:/example.html?region=cn 。忽略大小写。不包含 Hostname包含 URL 查询参数支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
| 请求来源(Referer 头部) | 匹配请求的 Referer 头部。忽略大小写。支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
| 请求内容类型(Accept 头部) | 匹配请求的 Accept 头部。忽略大小写。支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
| 请求路径(Path) | 匹配请求 URL 的路径部分。例如:/example.html 或者 /api/v2/login 。不包含 Hostname。不包含查询参数。忽略大小写。 |
| 请求方式(Method) | 匹配请求的方法。忽略大小写。支持多项选择:GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS、CONNECT。 |
| 请求 Cookie | 匹配指定请求 Cookie 头部参数值。需指定 Cookie 参数名称。忽略大小写。支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
| XFF 扩展头部 | 匹配请求的 XFF(X-Forwarded-For)头部。忽略大小写。支持等于、不等于、包含、不包含、通配符匹配、通配符不匹配、长度大于、长度小于、内容为空、不存在、正则匹配。 |
| 网络层协议 | 匹配请求使用的 IP 协议类型。支持多项选择:IPv4、IPv6。 |
| 应用层协议 | 匹配请求使用的应用层协议。支持多项选择:HTTP、HTTPS。 |
| 响应状态码 | 匹配响应的 HTTP 状态码。仅支持速率限制,选择基于响应统计时支持配置。最多支持同时匹配20个状态码。 |
| 请求正文 | 匹配请求的正文。仅支持匹配请求正文的前 8KB 数据 |
注意:说明:
注意:说明 1:如需对特定 Content-Length 头部配置策略,请使用 规则引擎 或 边缘函数,通过自定义头部匹配条件或http.request.headers变量匹配头部并处置请求。例如:使用规则引擎自定义头部(指定 Content-Length 头部值不为“0”)和请求 Method (指定 Method 为 POST)匹配条件,组合 HTTP 应答,实现拦截 Content-Length 为 0 的 POST 请求。