规则相关功能的特性说明

规则相关的功能在以下三个特性上存在差异。本文将对这三个特性的概念进行详细说明,并明确每个规则相关功能的特性差异。

规则配置和全局配置的生效优先级

  • 同一个功能下添加的规则配置的生效优先级指的是规则匹配的执行顺序。每一条规则配置在添加完成以后,都会有一个规则列表的序号,规则配置将会按序号从小到大的顺序来匹配。

  • 每个规则相关的功能都包含规则配置和全局配置,所有规则配置的生效优先级都高于全局配置,一个功能同时添加了规则配置和全局配置的情况下,如果用户请求匹配上规则条件,则规则配置会优先执行,如果没有匹配到规则条件,则最后会执行全局配置(如果全局配置为空,则会按照ESA节点上的默认设置来执行)。

序号

配置

规则条件

1

规则配置1

条件A(不匹配)

2

规则配置2

条件B

3

规则配置3

条件C

全局配置

执行顺序

规则配置的执行顺序为:序号1 > 序号2 > 序号3 > 全局配置。

规则功能的可重入性

功能模块的可重入性指的是某个指令是否可以安全地在多个阶段、多次调用,并且每次调用的行为是独立的、叠加的、互不影响的。

可重入的功能

在一个请求的处理过程中,可重入的功能可以被多次调用,并且每次调用的行为是独立的、叠加的、互不影响的,例如:修改出站请求头功能是可重入功能,同一个客户端请求如果匹配上多个规则条件,则对应的每个规则配置都会执行。

示例1:修改出站请求头

假如一个用户请求同时匹配条件B和条件C,那么配置2和配置3都会执行,全局配置也会执行,但是因为全局配置没有设置执行动作,因此没有影响,最终执行结果是用户请求将会被加上以下2个请求头:

  • animal: cat

  • fruit: apple

序号

规则配置

规则条件

功能配置

是否执行

1

规则配置1

条件A(不匹配)7dfac9467c5afbc5844c5c98eaed41fa

新增一个请求头,请求头名称为food,请求头值为rice。

7dfac9467c5afbc5844c5c98eaed41fa

2

规则配置2

条件Bimage

新增一个请求头,请求头名称为animal,请求头值为cat。

image

3

规则配置3

条件Cimage

新增一个请求头,请求头名称为fruit,请求头值为apple。

image

全局配置

image

不可重入的功能

在一个请求的处理过程中,不可重入的功能只能被调用一次,调用结束以后就跳出对应的功能模块。同一个客户端请求如果匹配上多个规则条件,则只有第一个匹配上的规则配置会执行。

示例2:重写URL

假如一个用户请求同时符合条件B和条件C,那么仅配置2会执行,由于规则配置2序号靠前,先匹配上了条件B,执行结果是用户请求URL的路径被改写为/animal:

  • 原始请求:http://example.com/test

  • 重写后的请求:http://example.com/animal

序号

规则配置

规则条件

功能配置

是否执行

1

规则配置1

条件A(不匹配)7dfac9467c5afbc5844c5c98eaed41fa

将用户请求URL的路径被改写为/food。

7dfac9467c5afbc5844c5c98eaed41fa

2

规则配置2

条件Bimage

将用户请求URL的路径被改写为/animal。

image

3

规则配置3

条件Cimage

将用户请求URL的路径被改写为/fruit。

7dfac9467c5afbc5844c5c98eaed41fa

全局配置

7dfac9467c5afbc5844c5c98eaed41fa

规则配置的生效颗粒度

规则配置的生效颗粒度包含功能维度和子功能维度。

功能维度

规则作用于整个功能模块,配置按整个功能模块生效。

说明

用户请求匹配上某个规则条件时,如果某个子功能模块的配置为空,则该子功能模块将按照未添加配置来执行。

示例1:SSL/TLS规则(不可重入功能,并且规则配置按功能维度生效)

假设用户请求同时符合条件 B 和条件 C,由于规则配置2序号靠前,先匹配上了条件B,则仅执行配置 2,其中 TLS 加密套件为空的部分按默认设置生效。

序号

规则配置

规则条件

SSL/TLS加密

TLS加密套件与协议版本配置

OCSP Stapling

HTTP/2

HTTP/3(QUIC)

是否执行

1

规则配置1

条件A(不匹配)7dfac9467c5afbc5844c5c98eaed41fa

开启

-

关闭

关闭

关闭

7dfac9467c5afbc5844c5c98eaed41fa

2

规则配置2

条件Bimage

开启image

-image

关闭image

关闭image

关闭image

image

3

规则配置3

条件Cimage

开启

-

开启

开启

开启

7dfac9467c5afbc5844c5c98eaed41fa

全局配置

关闭

-

关闭

开启

开启

7dfac9467c5afbc5844c5c98eaed41fa

子功能维度

规则作用于子功能模块,配置按子功能模块生效。

说明

用户请求匹配上某个规则条件时,如果某个子功能模块的配置为空,则该子功能模块将继续往下匹配规则条件,直到命中规则条件的同时,子功能模块的配置不为空。

示例2:缓存规则(不可重入功能,并且规则配置按子功能维度生效)

以下为缓存规则配置示例。假设用户请求同时符合条件 B、C 和 D,按照序号从小到大匹配则各子功能,未配置项按全局默认设置执行。

序号

配置

规则条件

缓存资格

浏览器缓存过期时间

边缘缓存过期时间

自定义CacheKey

端口缓存

响应过期缓存

缓存保持

1

规则配置1

条件A(不匹配)7dfac9467c5afbc5844c5c98eaed41fa

符合缓存条件

-

优先遵循源站缓存策略(如果存在),否则不缓存

-

-

关闭

-

2

规则配置2

条件Bimage

符合缓存条件image

-

优先遵循源站缓存策略(如果存在),否则不缓存image

-

-

关闭image

-

3

规则配置3

条件Cimage

绕过缓存

不缓存image

-

-

-

-

-

4

规则配置4

条件Dimage

符合缓存条件

-

忽略源站缓存策略,使用自定义缓存TTL=1小时

忽略查询字符串image

-

关闭

-

5

规则配置5

条件E

符合缓存条件

-

-

-

-

关闭

-

全局配置

-

-

-

-

默认关闭image

-

默认关闭image

最终生效配置

符合缓存条件image

不缓存image

优先遵循源站缓存策略(如果存在),否则不缓存image

忽略查询字符串image

关闭image

关闭image

关闭image

不同功能特性差异表

功能分类

规则功能名称

规则功能的可重入性

规则配置的生效颗粒度

规则配置的生效优先级

SSL/TLS

SSL/TLS规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

HTTPS规则

不可重入

子功能

按照规则列表的序号,序号越小,优先级越高。

转换规则

重写URL

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

修改出站请求头

可重入

子功能

按照规则列表的序号,序号越小,优先级越高。

修改出站响应头

可重入

子功能

按照规则列表的序号,序号越小,优先级越高。

重定向

重定向规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

缓存

缓存规则

不可重入

子功能

按照规则列表的序号,序号越小,优先级越高。

内容优化

文件压缩

不可重入

子功能

按照规则列表的序号,序号越小,优先级越高。

图像优化

不可重入

子功能

按照规则列表的序号,序号越小,优先级越高。

视频处理

不可重入

子功能

按照规则列表的序号,序号越小,优先级越高。

网络优化

网络优化规则

不可重入

子功能

按照规则列表的序号,序号越小,优先级越高。

回源

回源规则

不可重入

子功能

按照规则列表的序号,序号越小,优先级越高。

配置管理

版本管理

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

流量

等候室规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

负载均衡规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

需要注意是否设置了结束动作:

  • 设置了结束动作:第一条匹配上的规则,执行完之后就会结束,不再继续往下匹配。

  • 未设置结束动作:有多个规则条件匹配上的情况下,最后一条匹配上的规则对应的功能配置会最终执行。

安全防护

安全规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

自定义规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

频次控制规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

托管规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

扫描防护规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

白名单规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。

Bots规则

不可重入

功能

按照规则列表的序号,序号越小,优先级越高。