ESA规则表达式用于根据请求特征匹配流量并实施差异化策略。本文介绍单条和组合规则表达式的组成要素、运算符分类以及分组符号的使用方法。
注意事项
同一个功能,如果在全局配置和规则上都添加了配置,那么用户请求命中规则条件的时候,规则上的配置优先生效。
单条规则配置(规则条件+功能配置)的长度限制为4K字符。
站点维度上所有的配置信息(包含全局配置和规则配置)限制总大小不超过512K字符(安全防护中的规则配置除外)。
规则名称的长度限制为128字符。
单个过滤条件
简单业务场景下,单条规则表达式即可覆盖。单条规则表达式由匹配字段、匹配运算符以及匹配值组成。在控制台中,如果请求匹配以下规则...的配置区域即对应规则表达式,默认选择,便于配置过滤条件。
也可以选择来应用于所有请求,实现全局配置。

除使用控制台图形化控件创建规则表达式外,还可以通过表达式生成器直接创建。
多个过滤条件
条件的逻辑组合
当业务场景复杂时,单条过滤条件不足以覆盖需求,此时ESA规则支持通过逻辑运算符来实现组合多条子过滤条件,包括两种逻辑关系:
并且关系:单击
按钮创建并且关系。例如设置过滤条件为主机名等于 example-1.com并且国家/地区等于中国内地的规则表达式,参考下图。
或关系:单击
按钮创建或关系。例如设置过滤条件为"主机名等于 example-1.com或者主机名等于example-2.com"的规则表达式,参考下图。
单条规则的内嵌子条件数量与套餐类型相关,企业版最多支持 20 条,详情请参见产品计费。
嵌套层级
ESA规则支持在或关系中嵌套并且关系,最大嵌套深度为 2 层。ESA的规则引擎通过使用分组运算符来实现表达式的嵌套逻辑。您也可以直接通过表达式编辑器来编写较为复杂的表达式嵌套逻辑。例如同时设置以下过滤条件:
主机名等于
example-1.com的请求。或者主机名等于
example-2.com并且国家/地区不在中国内地的请求。或者主机名等于
example-3.com的请求。

附加功能
规则表达式还支持使用函数操作和验证表达式中的值。
表达式生成器
除图形化方式外,ESA还提供表达式生成器,通过代码配置规则表达式。
表达式生成预览
使用控制台图形控件配置规则表达式后,ESA自动生成对应的代码形式表达式。

单条表达式格式如下:
单条表达式 = (<匹配字段> <匹配运算符> <匹配值>),如( http.host eq "example-1.com")
嵌套表达式格式如下:
嵌套表达式 = (<单条表达式 1> <嵌套逻辑符> <单条表达式 2>),如( http.host eq "example-1.com" and http.host eq "example-2.com")
