规则引擎
使用场景
规则引擎功能通过图形化的方式实现各种规则配置,实现更加灵活、细粒度的规则配置。通过限制触发条件,控制当前配置生效的资源范围,满足多种场景的配置需求。主要适用于以下场景:
- CDN节点的相关配置不能满足特定的资源配置需求,如个别资源的访问控制条件与全局配置不同等场景。
注意事项
- 如需使用规则引擎功能,请提交工单申请开通。
- 单域名最多可配置10条规则。
- “业务类型”为“全站加速”的域名,暂不支持配置规则引擎。
- 后台有特殊配置的域名暂不支持配置规则引擎。
- 规则引擎功能和普通功能同时配置时,规则引擎优先级更高。
- 新增规则默认位于顶部,存在多条规则时顶部优先级大于底部,即如果同时匹配多条规则,高优先级的规则生效。
- 一个触发条件最多支持三级嵌套,最后一个层级的逻辑运算符只能是“并且”或“或者”,不能组合使用。
操作步骤
触发条件
每个触发条件都由“逻辑运算符”和“条件规则”组成。
逻辑运算符:同一层级的条件规则(包含嵌套规则)由“并且”和“或者”做逻辑判断。
- 并且:代表必须满足当前层级的所有条件才可触发操作。
- 或者:代表满足当前层级的某一个条件即可触发操作。
条件规则:每一个条件规则由“条件”、“运算符”和“值”组成。“条件”和“值”用来决定哪些请求需遵循当前规则,“运算符”用来定义哪种情况下该条件规则成立。
- 包含任意一个:用户请求包含条件的任意一个值时,条件成立。
- 不包含其中任意一个:用户请求完全不包含条件的任意一个值时,条件成立。
- 存在:用户请求信息中存在当前条件配置的参数时(无论值是什么),条件成立。
- 不存在:用户请求信息中不存在当前条件配置的参数时(无论值是什么),条件成立。
触发条件规则配置说明
当用户请求匹配了当前的触发条件规则时,将执行当前规则配置的操作。触发条件配置时相关参数解释详见表1。
条件 |
匹配条件含义 |
名称 |
运算符 |
值 |
区分大小写(值) |
---|---|---|---|---|---|
协议类型 |
客户端请求使用的协议类型,例如:HTTP、HTTPS。 |
不涉及 |
|
|
不涉及 |
请求方法 |
客户端请求使用的请求方法,例如:GET、PUT。 |
不涉及 |
|
当前支持的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、PATCH、TRACE、CONNECT。 |
不涉及 |
URI路径 |
客户端请求URL中的路径,不含请求参数,例如:/favicon.ico。 |
不涉及 |
|
|
默认区分大小写,关闭“区分大小写”开关后,大写和小写将认为是同一个值。 |
HTTP请求头 |
用户请求中携带的请求头。 |
请求头名称
|
|
|
默认区分大小写,关闭“区分大小写”开关后,大写和小写将认为是同一个值。 |
查询参数 |
用户请求URL中携带的请求参数。 |
请求参数名称
|
|
|
默认区分大小写,关闭“区分大小写”开关后,大写和小写将认为是同一个值。 |
文件名称 |
客户端请求的文件的名称,例如:name1。 |
不涉及 |
|
支持输入多个值 |
默认区分大小写,关闭“区分大小写”开关后,大写和小写将认为是同一个值。 |
文件后缀 |
客户端请求的文件的后缀名,从右向左识别,识别到第一个".",例如:.txt。 |
不涉及 |
|
支持配置.txt、.doc、.html、.jpg、.png、.svg、.zip、.rar等后缀,可选择或输入多个后缀。 |
默认区分大小写,关闭“区分大小写”开关后,大写和小写将认为是同一个值。 |
客户端IP |
客户端的IP。 |
|
|
支持IPv4(如0.0.0.0)、IPv6(如240e:95c:3004:2:3:0:0:XXX)。 支持配置网段(如192.168.XXX.XXX/31)。IPV4的网段支持1~32;IPV6的网段支持1~128。 |
不涉及 |
客户端IP版本 |
IPv4或IPv6。 |
|
|
|
不涉及 |
Nginx变量 |
当上方所有的变量均无法满足需求时,支持使用Nginx变量来配置,支持的变量有$protocol、$arg_、$http_、$scheme、$uri、$ssl_protocol、$ssl_server_name、$remote_addr、$http2、$request_method、$sent_http_。
注意:
当变量选择“$sent_http_”时,“执行操作”仅能配置“HTTPheader响应头”;反之,仅“执行操作”选择“HTTPheader响应头”时,才可以选择变量“$sent_http_”。 |
Nginx变量名称
|
|
|
默认区分大小写,关闭“区分大小写”开关后,大写和小写将认为是同一个值。 |
User-Agent |
请求头中的User-Agent。 |
不涉及 |
|
|
默认区分大小写,关闭“区分大小写”开关后,大写和小写将认为是同一个值。 |
执行操作
当客户端请求匹配了触发条件中的规则时,将执行相关配置。当前规则引擎支持的配置详见表2。
功能分类 |
功能名称 |
说明 |
---|---|---|
基础配置 |
与“高级配置”中的“HTTP header配置(跨域请求)”配置要求一致,生效范围不同:
|
|
匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的高级回源配置。 |
||
匹配了条件规则中触发条件的客户端请求,需要遵循该规则中回源请求头配置。 |
||
提升访问安全 |
匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的访问控制配置。当前可配置允许和拒绝。
|
|
提升命中率 |
匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的回源URL改写配置。 改写方式:定义如何获取改写内容,支持配置精确改写和捕获改写。非规则引擎中的回源URL改写功能,匹配方式所有文件、URL路径对应精确改写,通配符对应捕获改写。 |
|
匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的缓存规则配置。 |
||
匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的访问URL重写配置。 |
||
缓存配置 |
匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的状态码缓存过期时间配置。 |
|
匹配了条件规则中触发条件的客户端请求,需要遵循该条件规则中的浏览器缓存过期时间配置。 |
IP地址校验模式
规则引擎功能的“IP地址校验模式”分为两种,使用不同的“IP地址校验模式”会影响到CDN节点对客户端IP的判断:
- 建联 IP:该模式匹配的是客户端与CDN节点之间建连使用的IP,如果客户端与CDN节点之间有经过代理服务器,那么建联IP=代理服务器IP。
- x-forwarded-for头:该模式匹配的是用户请求中x-forwarded-for请求头携带的左边第一个IP,不论客户端与CDN节点之间是否有经过代理服务器,x-forwarded-for头IP都=客户端真实IP。
示例:假设客户端真实IP为10.10.10.10,代理服务器IP为192.168.0.1。
- 没有经过代理服务器:
- 用户请求中x-forwarded-for请求头值:10.10.10.10。
- 客户端真实IP(即x-forwarded-for请求头携带的左边第一个IP)=客户端与CDN节点建连IP=10.10.10.10。
- 经过代理服务器:
- 用户请求中x-forwarded-for请求头值:10.10.10.10,192.168.0.1。
- 客户端真实IP(即x-forwarded-for请求头携带的左边第一个IP)=10.10.10.10。
- 客户端与CDN节点建连IP=代理服务器IP=192.168.0.1。
- 客户端真实IP(即x-forwarded-for请求头携带的左边第一个IP)≠客户端与CDN节点建连IP。