tencent cloud

边缘安全加速平台 EO

动态与公告
产品动态
安全公告
产品公告
产品简介
产品概述
产品优势
应用场景
EdgeOne 与 CDN 等产品功能对比
使用限制
购买指南
试用套餐体验权益说明
免费版套餐使用说明
计费概述
计费项目
购买指引
续费指引
欠费与退款说明
套餐选型对比
关于“干净流量”计费说明
DDoS 防护容量说明
快速入门
选择业务场景
快速接入网站安全加速
通过 Pages 快速部署网站
域名服务与源站配置
域名服务
HTTPS 证书
源站配置
站点加速
概述
访问控制
智能加速
缓存配置
文件优化
网络优化
URL 重写
修改头部
修改应答内容
规则引擎
图片与视频处理
单连接下载限速
DDoS 与 Web 防护
概述
DDoS 防护
Web 防护
Bot 管理
API 资产识别(Beta)
边缘函数
概述
快速指引
操作指引
Runtime APIs
示例函数
实践教程
Pages
四层代理
概述
新建四层代理实例
修改四层代理实例配置
停用/删除四层代理实例
批量配置转发规则
获取客户端真实IP
数据分析与日志服务
日志服务
数据分析
告警服务
站点与计费管理
计费管理
站点管理
版本管理
通用策略
通用参考
配置语法
请求与响应行为
国家/地区及对应代码枚举
Terraform
Terraform 简介
安装和配置 Terraform
实践教程
自动预热/清除缓存
防盗刷/盗链实践
HTTPS 相关实践
加速优化
流量调度
数据分析与告警
第三方日志平台集成实践
对象存储类源站(例如:COS)配置实践
跨域响应配置
API 文档
History
Introduction
API Category
Making API Requests
Site APIs
Acceleration Domain Management APIs
Site Acceleration Configuration APIs
Edge Function APIs
Alias Domain APIs
Security Configuration APIs
Layer 4 Application Proxy APIs
Content Management APIs
Data Analysis APIs
Log Service APIs
Billing APIs
Certificate APIs
Origin Protection APIs
Load Balancing APIs
Diagnostic Tool APIs
Custom Response Page APIs
API Security APIs
DNS Record APIs
Content Identifier APIs
Legacy APIs
Ownership APIs
Image and Video Processing APIs
Multi-Channel Security Gateway APIs
Version Management APIs
Data Types
Error Codes
常见问题
产品特性相关问题
DNS 记录相关问题
域名配置相关问题
站点加速相关问题
数据与日志相关问题
安全防护相关问题
源站配置相关问题
排障指南
异常状态码参考
EdgeOne 4XX/5XX 状态码排障指南
520/524状态码排障指南
521/522 状态码排障指南
工具指南
相关协议
Service Level Agreement
源站防护启用特别约定
TEO 政策
隐私协议
数据处理和安全协议
联系我们
词汇表

Condition

PDF
聚焦模式
字号
最后更新时间: 2025-12-05 14:26:35
本文档介绍了各功能模块中条件表达式支持的语法内容和书写规范。不同功能模块的条件表达式均采用统一的结构格式,具体支持的目标字段、运算符和值类型可能因模块而异。

表达式结构

条件表达式由三个基本组成部分构成:​​目标字段​​、​​运算符​​和​​值​​,其基本格式如下图所示:



目标字段​​:通常为 ${…} 形式的内置 变量,例如 ${http.request.uri.path}${http.request.method} 等,用于提取请求中的特定信息。
​​运算符​​:例如 in、matches、exists 等,用于判断目标字段与值之间的关系。
​​值​​:可以是字符串、数字、列表或其他变量,需根据运算符使用方括号 [ ] 包裹,例如 ['POST'][100, 200]

运算符

匹配运算符

名称
关键字
支持的数据类型
示例
支持的功能模块
值在集合内
in
String、Number

说明:
Number 支持整形、浮点。
集合支持常值和变量。
${http.request.file_extension} in ["jpg", "png"]
站点加速、边缘函数、Web 防护
正则匹配
matches
仅支持 String

说明:
仅支持通过常值字符串定义的正则表达式。
${http.request.uri.path} matches "^/admin/"
站点加速、边缘函数、Web 防护
存在
exists
不限定数据类型

说明:
该运算符检查字段(键 / 属性)是否存在,不检查字段值。
${http.request.uri.args["status"]} exists
站点加速、边缘函数、Web 防护
通配符匹配
like
仅支持 String
${http.request.uri.path} like "/prod*"
Web 防护
包含匹配
contain
仅支持 String
${http.request.uri.path} contain ["api", "login"]
Web 防护
大于
>
仅支持 Number
length(${http.request.headers["user-agent"]}) > 30
Web 防护
小于
<
仅支持 Number
length(${http.request.headers["user-agent"]}) < 10
Web 防护

逻辑运算符

当前的功能模块均支持该运算符规则,多个条件可通过逻辑运算符组合:
and:逻辑与,所有子条件均为真时返回真(例如 A and B)。
or:逻辑或,任一子条件为真时返回真(例如 A or B)。
not:逻辑非,对一个布尔表达式取反(例如 not A)。
运算符优先级为:not > and > or,可使用括号( ) 改变运算顺序。例如:
//表示“同时满足 A 条件,且(满足 B 条件或不满足 C 条件)”。
${A} and (${B} or not ${C})

表达式书写注意事项

变量格式:目标字段变量必须用 ${} 括起,内部支持点式和索引式访问,例如 ${http.request.headers['User-Agent']}${security.ip_group['123'@'zone-xyz']} 等。
值类型:字符串值必须用单引号括起并放在列表中,例如 in ['value1','value2'];数字值可直接写如 > 100;空值使用特殊关键字 null(参考特殊变量)。
列表形式:即使只有一个值,也需写成列表形式(方括号包裹),例如 in ['POST']in [200]
引号与转义:列表中的字符串用单引号,内部如果包含特殊字符(例如 @. 等)无需额外转义。
大小写:操作符统一使用小写(如 andornotinlikecontain),字段名称区分大小写(例如 User-Agentuser-agent 不同)。
注意:
条件匹配默认区分大小写。如需忽略大小写,请使用转换函数:lower(${http.request.uri.args['Test']}) in ['a', 'b']

更多示例

以下是一些典型条件表达式的用法说明和对应代码:
1. ​​匹配特定路径和请求方法​​
当请求路径为 /api/v3/test/api/v3/submit,且 HTTP 请求方法为 POST 时触发。
${http.request.uri.path} in ['/api/v3/test','/api/v3/submit'] and ${http.request.method} in ['POST']
2. ​​匹配客户端 IP 或 ASN​​
匹配客户端 IP 地址为 1.1.1.1、属于子网 10.10.10.0/24,或其自治系统号(ASN)为 132203 的请求。
${http.request.ip} in ['1.1.1.1','10.10.10.0/24'] or ${http.request.ip.asn} in ['132203']
3. ​​匹配特定请求头值​​
匹配 Referer 请求头值为 one.example.com 的请求。
${http.request.headers['referer']} in ['one.example.com']
4. ​​检查长度​​
请求正文长度小于 30。
length(${http.request.body}) < 30
5. ​​通配符路径匹配​​
匹配以 /a/wildcard/path//another/wildcard/path/ 开头的请求路径。
${http.request.uri.path} like ['/a/wildcard/path/*','/another/wildcard/path/*']
6. ​​字符串包含检查​​
匹配请求路径中包含子串 api 或 test 的请求。
${http.request.uri.path} contain ['api','test']
7. ​​复合存在性与取值检查​​
匹配 Accepts 请求头不存在,且 CustomHeader 请求头值为空字符串的请求。
not ${http.request.headers['Accepts']} exists and ${http.request.headers['CustomHeader']} in ['']

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈