火山引擎内容分发网络(CDN)的规则引擎提供了自定义请求处理的能力。您可以通过设置一系列匹配条件和执行动作,来控制 CDN 节点对用户请求的响应方式。例如,您可以实现自定义缓存策略、URL 重写、访问控制、以及请求头和响应头的操作。本文将详细介绍规则引擎的核心概念、处理流程、配置优先级以及具体配置项,并通过示例帮助您快速上手。
说明
并非所有 CDN 特性都支持在规则引擎中配置。例如,"回源参数设置" 和 "Multi-range" 等特性只能在“分阶段配置”中设置。有关规则引擎支持的 CDN 特性,请参阅 动作列表。
规则引擎包含以下核心概念:
IF...ELSE... 结构的条件表达式。IF 或 ELSE 分支下,用于实现更精细的逻辑控制。当请求满足父规则的条件时,CDN 会在执行父规则中定义的动作后继续处理父规则下的子规则。每条规则的 IF 和 ELSE 分支下总共可包含最多 10 条子规则。子规则不能再嵌套。IF 和 ELSE 两部分组成。如果请求满足 IF 中定义的条件,则 CDN 执行 IF 下的动作;否则,执行 ELSE 下的动作。IF 语句的匹配逻辑。您可以创建一个或多个匹配条件,并定义匹配条件之间的逻辑关系。逻辑关系有 全部满足 和 满足任意。匹配条件有以下类型:
下图展示了这些概念之间的关系:
规则引擎提供以下三种创建规则的方式:

创建一个空白规则,然后根据您的需求配置规则。
规则引擎为常见场景提供了配置模板。您可以基于模板创建规则,以提高配置效率。
例如,在配置精细化的封禁策略时,您可以选择 精细化封禁规则 模板来生成基础配置。之后,您只需要微调规则配置以适配您的业务场景。
在规则引擎中,系统会为每条规则生成对应的 DSL 代码。在规则的右上方,您可以点击 DSL 来查看代码。您可以复制已有规则的 DSL 代码来创建规则,然后进一步修改规则配置。