本文介绍如何配置基于规则的自定义解析。
前提条件
已添加需配置自定义解析的域名,参见概述。
操作步骤
登录EMAS控制台。
在左侧导航栏选择解析管理> 自定义解析。
点击添加自定义解析,策略类型选择规则策略。

您可以做以下配置:
基本信息
参数
说明
域名
您希望自定义解析的域名,例如:www.aliyun.com。
说明域名选择下拉的数据源来自于接入域名中已经添加的域名,如果想要自定义解析的域名不在下拉列表中,可以到域名列表中添加后,再为该域名添加自定义解析记录。
如果要为某个泛域名的子域名添加自定义解析记录,例如:*.aliyun.com,但你想要自定义域名是 a.aliyun.com,则需要将 a.aliyun.com 添加到域名列表中,再为该域名添加自定义解析记录。
域名选择下拉字段选不到对应的域名有以下几种情况:
想要添加的域名不在域名列表中,您可以到接入域名中添加对应的域名即可。
想要添加的域名是某个泛域名的子域名,将该子域名添加到域名列表即可。
想要添加的域名已经存在自定义解析记录,需要去自定义解析记录列表管理对应的域名。
线路
可针对运营商和地域进行线路配置。
运营商:可以自定义运营商,例如 中国电信
如果运营商设置为默认,表示当前线路覆盖所有运营商。
地理位置:可以自定义省份,例如:北京、河北,目前仅支持中国内地。
如果省份设置为默认,表示当前线路覆盖所有省份。
说明在同一个域名下,对于相同地域的用户,线路生效的优先级是:运营商>地理位置>默认。例如,电信-北京>电信-默认>默认-北京>默认-默认。
例如:如果在同一个域名下同时存在两条规则策略,线路分别是电信-北京和电信-默认,那么对于北京的电信用户会使用电信-北京线路的规则策略。
自定义解析规则
一条规则策略最多支持配置 10 条自定义解析规则。
参数
说明
规则名称
说明当前规则的名称,可以用来表达规则的用途,例如:通过SDK版本调度。
规则排序
多个规则之间可以调整顺序,匹配的逻辑是从上往下串行匹配,顺序决定了哪个规则会被优先命中,调整顺序后会按照新的顺序匹配。
SDNS参数配置
用来匹配客户端请求解析接口携带的SDNS参数,决定该条规则是否被命中,如果匹配成功,则返回该条规则中的解析记录值。详细的匹配逻辑请查看规则策略匹配逻辑说明。
参数名称:SDNS参数的名称,长度限制为 2 ~ 64 个字符。
参数值:SDNS参数的值,长度限制为 1 ~ 64 个字符。
说明一条规则最多添加 10 个 SDNS参数。
解析接口可以添加SDNS参数,具体查看 客户端传递自定义解析参数。
解析记录值
自定义解析的返回值集合,每个记录值代表记录集中的一条解析记录,必填。
记录类型:返回解析记录值的类型,支持A和AAAA记录。
记录值:返回的记录值
您可以添加多个记录值,在未开启权重的情况下,添加的多个记录值将会合并在一起返回。
还可以按照权重调度,只需要打开按照权重调度开关即可。开启权重后,可以为每个记录值设置权重,权重值设置范围为:1-100,根据记录值的权重,通过负载均衡算法返回一个合适的记录值。
说明一条规则最多添加 10 个记录值。
TTL
必填,自定义解析记录的有效期。有效期越短,HTTPDNS SDK 中的解析记录缓存过期就越快。同时,HTTPDNS SDK 请求新的解析记录的频率就越高。
策略验证
添加规则策略的页面中,提供了验证规则的能力,如下图所示:

在弹窗的策略验证窗口中,输入对应的参数可以验证当前的策略是否符合预期。

规则策略匹配逻辑说明
使用规则策略的解析流程如下所示,通过请求接口中携带的参数来匹配具体的规则,规则从上往下串行匹配,一旦有规则命中,则终止匹配并返回已经匹配规则的结果。如果现有的规则都没有被命中,则去权威服务器获取结果并返回。
单条规则参数匹配的逻辑如下:
接口携带的参数完整匹配规则中配置的参数, 则匹配成功。完整匹配是指,解析参数是规则配置参数的子集或全集。
如果规则中未配置参数,则该条规则匹配成功。
规则中多个参数之间是「且」的关系。
下面举例说明具体的匹配逻辑:
假如需要自定义解析的域名是:www.example.com
示例1
规则 A 参数配置如下:
参数名 | 参数值 |
osType | Android |
规则 B 参数配置如下:
参数名 | 参数值 |
osType | iOS |
规则 C 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
携带的参数:
参数名 | 参数值 |
osType | iOS |
匹配结果:
示例1中,携带的参数完全匹配到规则B,HTTPDNS 服务端会返回规则 B 中的记录值。
示例2
规则 A 参数配置如下:
参数名 | 参数值 |
osType | iOS |
bizType | app |
规则 B 参数配置如下:
参数名 | 参数值 |
osType | iOS |
规则 C 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
携带的参数:
参数名 | 参数值 |
osType | iOS |
匹配结果:
示例2中,因为规则的参数是「且」的关系,根据完全匹配的原则,携带的参数完全匹配到 规则B,HTTPDNS 服务端会返回规则 B 中的记录值。
示例3
规则 A 参数配置如下:
参数名 | 参数值 |
osType | iOS |
bizType | car |
规则 B 参数配置如下:
参数名 | 参数值 |
osType | iOS |
bizType | car |
region | hangzhou |
规则 C 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
region | shanghai |
携带的参数:
参数名 | 参数值 |
osType | iOS |
bizType | car |
region | hangzhou |
匹配结果:
示例3中,根据完全匹配和优先返回的原则,携带的参数完整匹配到规则A,HTTPDNS 服务端会优先返回规则 A 中的记录值。
示例4
规则 A 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
规则 B 参数配置如下:
参数名 | 参数值 |
osType | iOS |
bizType | car |
region | hangzhou |
规则 C 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
region | shanghai |
携带的参数:
参数名 | 参数值 |
osType | iOS |
匹配结果:
示例4中,根据完全匹配和优先返回的原则,携带的参数没有命中任何规则,HTTPDNS 服务端会返回权威服务器的查询结果。
示例5
规则 A 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
规则 B 没有配置参数。
规则 C 参数配置如下:
参数名 | 参数值 |
osType | Android |
bizType | car |
region | shanghai |
携带的参数:
参数名 | 参数值 |
osType | iOS |
匹配结果:
示例 5 中,根据完全匹配和优先返回的原则,携带的参数完整匹配到规则 B,HTTPDNS 服务端会优先返回规则 B 中的记录值。
后续步骤
参考以上内容,您已经配置了基于规则的自定义解析,请参考概述继续完成后续步骤。