规则表达式语法

更新时间:
复制为 MD 格式

ESA规则表达式用于根据请求特征匹配流量并实施差异化策略。本文介绍单条和组合规则表达式的组成要素、运算符分类以及分组符号的使用方法。

注意事项

  • 同一个功能,如果在全局配置和规则上都添加了配置,那么用户请求命中规则条件的时候,规则上的配置优先生效。

  • 单条规则配置(规则条件+功能配置)的长度限制为4K字符。

  • 站点维度上所有的配置信息(包含全局配置和规则配置)限制总大小不超过512K字符(安全防护中的规则配置除外)。

  • 规则名称的长度限制为128字符。

单个过滤条件

简单业务场景下,单条规则表达式即可覆盖。单条规则表达式由匹配字段匹配运算符以及匹配值组成。在控制台中,如果请求匹配以下规则...的配置区域即对应规则表达式,默认选择传入请求类型 > 自定义规则,便于配置过滤条件。

也可以选择传入请求类型 > 所有传入请求来应用于所有请求,实现全局配置。

image

说明

除使用控制台图形化控件创建规则表达式外,还可以通过表达式生成器直接创建。

多个过滤条件

条件的逻辑组合

当业务场景复杂时,单条过滤条件不足以覆盖需求,此时ESA规则支持通过逻辑运算符来实现组合多条子过滤条件,包括两种逻辑关系:

  • 并且关系:单击image按钮创建并且关系。例如设置过滤条件为主机名等于 example-1.com 并且国家/地区等于中国内地的规则表达式,参考下图。image

  • 或关系:单击image按钮创建关系。例如设置过滤条件为"主机名等于 example-1.com 或者主机名等于 example-2.com"的规则表达式,参考下图。image

说明

单条规则的内嵌子条件数量与套餐类型相关,企业版最多支持 20 条,详情请参见产品计费

嵌套层级

ESA规则支持在或关系中嵌套并且关系,最大嵌套深度为 2 层。ESA的规则引擎通过使用分组运算符来实现表达式的嵌套逻辑。您也可以直接通过表达式编辑器来编写较为复杂的表达式嵌套逻辑。例如同时设置以下过滤条件:

  • 主机名等于 example-1.com 的请求。

  • 或者主机名等于 example-2.com 并且国家/地区不在中国内地的请求。

  • 或者主机名等于 example-3.com 的请求。

image

附加功能

规则表达式还支持使用函数操作和验证表达式中的值。

表达式生成器

除图形化方式外,ESA还提供表达式生成器,通过代码配置规则表达式。

表达式生成预览

使用控制台图形控件配置规则表达式后,ESA自动生成对应的代码形式表达式。

image

  • 单条表达式格式如下:

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

    嵌套表达式 = (<单条表达式 1> <嵌套逻辑符> <单条表达式 2>),如( http.host eq "example-1.com" and http.host eq "example-2.com")

编辑表达式

单击编辑表达式可直接编辑规则表达式。各子功能支持的类型请参见匹配字段匹配运算符以及匹配值image