如果您的业务有特定用户需求或特定应用场景,您可以使用自定义规则来实现。
创建自定义规则
操作流程
登录ESA控制台。
在站点管理页面,单击目标站点名称,或对应站点操作列的详情。
在左侧导航栏,选择
,如果已有负载均衡器,单击编辑。没有现有负载均衡器,单击创建负载均衡器。在创建或编辑负载均衡器的流程中,选择自定义规则。单击创建自定义规则。
填写规则名称。在当请求匹配规则时,选择一个字段的属性。
对于则执行,选择响应指定内容或修改负载均衡调度策略。
项目
操作项
说明
响应指定内容
响应的状态码
默认200,非必填。
Content Type
非必填,默认application/octet-stream。
Location
非必填,默认不响应该HTTP头部,最大1024字节。
Body
非必填,默认为空,即HTTP Body为空。 最大1024字节。
替代负载均衡器配置
源地址池
指定源地址池。
兜底源地址池
指定兜底源地址池。
负载均衡策略
指定负载均衡策略。
会话保持
开启或关闭会话保持功能。
一级区域地址池
全球大区级源地址池。
二级区域地址池
包含在对应一级区域内的区域级源地址池。
负载均衡器TTL
控制数据包在网络中的有效时间。
结束
结束负载均衡器自定义规则的匹配和执行。
单击确认。
支持字段及运算符
表达式生成器支持字段
字段 | 说明 |
客户端IP | 客户端来源IP。 |
Cookie值 | HTTP Cookie。 |
主机名 | 请求的访问Host。 |
标头 | HTTP请求头部。 |
URI | HTTP URI。 |
URI查询字符串 | URI查询字符串。 |
URI路径 | HTTP URI Path |
HTTP版本 | HTTP版本。 |
运营商 | 客户端IP归属的运营商。 |
IP协议版本 | 客户端IP所属的协议版本,包含IPv4、IPv6。 |
省份 | 国家之下的一级行政单位。 |
负载均衡器所在区域 | 负载均衡器的节点所在区域。 |
请求时间戳 | 请求到达节点时对应的时间戳(Unix时间)。 |
表达式编辑器支持字段
匹配类型 | 匹配类型含义 | 匹配类型变量 | 支持的匹配运算符 | 匹配值 |
请求方法 | 客户端请求使用的请求方法。 | http.request.method |
| 可选值:
|
HTTP 版本 | 客户端请求使用的HTTP版本。 | http.request.version | 可选值:
| |
国家/地区 | 客户端IP地址归属的国家/地区。 | ip.geoip.country |
| |
文件名 | 客户端请求的文件的名称 | http.request.uri.path.file_name |
| |
文件扩展名 | 客户端请求的文件的后缀名。 | http.request.uri.path.extension |
| |
IP源地址 | 客户端的IP。 | ip.src |
| |
SSL/HTTPS | 客户端请求使用的协议类型。 | http.request.scheme |
| 可选值:
|
主机名 | 客户端请求携带的hostname。 匹配顺序:请求URL中的host>请求头HOST中的host。 | http.host |
|
|
URI | 客户端请求URL中的路径,包含请求参数。 | http.request.uri |
| |
主机URI 完整名 | 客户端请求的完整URI。 | http.request.full_uri |
| |
URI 路径 | 客户端请求URL中的路径,不含请求参数。 | http.request.uri.path |
| |
URI 查询字符串 | 客户端请求URL中完整的请求参数。 | http.request.uri.query |
| |
URI 指定查询字符串 | 客户端请求URL中指定的请求参数。 | http.request.uri.args["session"] |
| |
Cookie | 客户端请求携带的Cookie。 | http.cookie |
|
|
用户代理 | 客户端请求携带的客户端信息。 | http.user_agent |
| |
引用方 | 发起客户端请求的原始页面的URL。 | http.referer |
| |
X-Forwarded-For | 客户端请求中X-Forwarded-For标头的值。 | http.x_forwarded_for |
| |
请求标头 | 客户端请求中指定标头。 | http.request.headers["session"] |
| |
Cookie 值 | 客户端请求中指定的Cookie参数。 | http.request.cookies["session"] |
|
运算符
运算符名称 | 运算符 | 是否支持取反 | 值类型 | 备注 |
等于 | eq | 不支持 | string | / |
不等于 | ne | 不支持 | string | / |
包含 | contains | 支持 | string | 包含字符串。 |
与正则表达式匹配 | matches | 支持 | string | 正则匹配: 仅bussiness和enterprise套餐支持正则匹配。 |
值为其中任意一项 | in | 支持 | array | 值为其中任意一项:
|
字符串开头为 | starts_with | 支持 | string | / |
字符串结尾为 | ends_with | 支持 | string | / |
长度小于 | len-lt | 不支持 | integer | 字符串长度小于。 |
长度等于 | len-eq | 不支持 | integer | 字符串长度等于。 |
长度大于 | len-gt | 不支持 | integer | 字符串长度大于。 |
在列表中 | in_list | 支持 | integer | 列表需要在账号维度上新建列表,然后在这里调用。 |
存在 | exists | 支持 | bool | 匹配对象有包含key/value键值对的情况下,用于表示子key存在,例如:在header、cookie、查询字符串等场景。 |
大于 | gt | 不支持 | integer | 整数场景下使用。 |
小于 | lt | 不支持 | integer | 整数场景下使用。 |
大于等于 | ge | 不支持 | integer | 整数场景下使用。 |
小于等于 | le | 不支持 | integer | 整数场景下使用。 |