所谓泛解析域名, 就是大家常说的Wildcard DNS这种东西。它的意思是利用只有一条的DNS记录。就可以让主域名的所有子域名都变成指向同一个目标地址的情况。比如说在配置了 .example.com 之后呢。像a.example.com这样的。
还有b.example.com这样的。再比如abc.example.com这样的。它们全部都会自动生效。根本不需要去逐一添加记录。这是在多子站点、API网关、测试环境这些场景下, 最高效的那一种DNS管理方式。
CNAME与A记录在泛解析中的核心区别
选择原则是, 如果你的站点部署在云服务器并且IP地址固定, 那么使用泛解析A记录;如果你使用的是CDN服务或者是SaaS服务, 那么就尽可能优先采用泛解析CNAME记录。
配置步骤(以主流DNS面板通用流程为例)
1. 你需要先登录上管理控制台, 然后再进入目标域名的DNS解析设置页面。
2. 添加一条记录, 主机记录填写, 记录类型选择A或者CNAME。
3. 具体的记录值填写方法是这样的, A记录这一项要填入目标的IP地址, CNAME记录那一处则需要填入目标的域名内容, 并且这个域名不能带上www这样的前缀。
4. 建议把这个TTL设置成600秒, 也就是10分钟这样。这么做呢, 是为了方便后续的验证工作能够更快生效。
5. 在进行保存操作之后, 大家可以使用带有尖括号和代码标记的dig命令, 专门去查询那个以点开头并且接上你的域名然后跟着A记录的dns测试指令, 或者是直接使用nslookup这个工具的名字本身来作为验证手段, 去确认最终的结果是不是真正命中了相应的目标。
拿 gname.xin 这个域名做例子, 你要去添加一个主机记录, 这里的内容被截断或无效, 选择类型是 CNAME, 然后填写记录值为 edge.gname.xin, 这样做的话, 不管是谁用的 xxx.gname.xin 这些子域名, 都会自动解析到那个 CDN 边缘节点上去。
典型适用场景
那个是多租户SaaS平台, 每一个租户会使用一个独立的子域名, 同时他们又共享同一套后端服务。
对于API网关来说, 它提供了一个统一的入口区域, 并且在使用像 /v1 以及 /v2 这样的不同版本接口的时候, 它是通过子域名的方式来对这些不同版本进行区分的。
在开发/测试环境里面, 你可以快速生成在 .dev.example.com 这个域名下面的任意子域, 这样的话, 就不需要去每一个都单独进行备案了。
前端静态站群这个做法, 就是拿同一个CDN去分发几百个不同子品牌的网站。
必须注意的限制与风险
1. HTTPS证书这一项业务, 指的是在泛解析的CNAME记录指向CDN之后, 需要购买通配符证书, 也就是说证书的格式是.domain.com这种情况, 否则的话, 子域名那边是无法启用https这种协议的。
2. MX记录冲突: 如果根域名设置了邮件MX记录, 那么泛解析A记录不会影响到根域名的MX记录, 但是泛解析CNAME不能和MX记录共用同一个主机。
3. 关于ICP备案(中国大陆)这一项事宜泛解析域名灵音心图,每一个单独的子域名如果它是独立地对外的进行服务提供的话, 就一定要去确认它是不是需要进行单独的备案操作, 通配符解析这件事情本身是不会触发那些额外的备案流程的, 但是业务合规方面的相关要求, 是需要由运营方自己去做出判断的。
4. 关于安全隔离这一点, 泛解析的意思是任意子域名都是可以访问的, 所以务必要做到在应用层面把鉴权工作给做好, 这样才不会造成未授权的子域名去暴露那些测试环境或者管理后台的情况。
常见问题速答
问:泛解析后能否单独关闭某一个子域名?
答案是不能直接就把它关闭, 这是因为 这个设置会覆盖掉所有的子域名情况。我们需要做的是, 针对那个目标子域名去添加一条具有相同优先级的具体记录, 比方说把 off.example.com 指向 127.0.0.1 这样的情况出现, 从而通过这种方式来掩盖住之前的那些泛解析结果。
问:泛解析A和泛解析CNAME能否同时存在?
答: 在同一个主机记录下面, 也就是在这个标签所指代的那个位置里头, A记录以及CNAME记录没有办法共存一起。如果你的业务确实需要这么做的情况之下, 可以选择把他们拆开来, 分别去配放在不同的子域里面去。
问:生效时间多久?
答: 这取决于您设定的TTL数值。当默认的TTL值为3600秒时, 全球范围的生效时间需要1个小时;如果您先将TTL值预降低到60秒, 然后再执行修改操作, 通常只要不到1分钟, 各个ISP的递归缓存就能够全部刷新完毕。
只要把这些要点搞清楚, 那么在大多数的业务处理过程中, 都能够把泛解析的域名给部署得没错并且保证安全, 从而能够避开那些因为解析产生的冲突问题以及证书方面的缺口情况出现。


