CDN 如何配置泛域名加速支持多级子域名?

文章导读
泛域名加速在主流 CDN 服务商处均支持,但多级子域名(如 a.b.example.com)能否被同一泛域名证书覆盖,取决于证书类型和 CDN 边缘节点的匹配规则。通常建议为不同层级单独配置或确认证书 SAN 列表,避免 SSL 握手失败。
📋 目录
  1. 核心配置流程
  2. 怎么验证是否生效
  3. 常见风险与排查
A A

泛域名加速在主流 CDN 服务商处均支持,但多级子域名(如 a.b.example.com)能否被同一泛域名证书覆盖,取决于证书类型和 CDN 边缘节点的匹配规则。通常建议为不同层级单独配置或确认证书 SAN 列表,避免 SSL 握手失败。

先说结论:泛域名加速可行,但多级子域名需特别注意 SSL 证书匹配层级。

  • 适合:业务子域名众多且动态增加,希望统一管理的场景。
  • 先准备:确认证书是否支持多级匹配,预留 DNS 解析权限。
  • 验收:通过 HTTPS 访问深层子域名,检查证书报错与缓存命中。
  • 风险警告:标准泛域名证书(*.example.com)不保护多级子域名(a.b.example.com),务必提前核实。

核心配置流程

CDN 配置主要通过控制台操作,核心在于域名添加、证书部署与 DNS 指向三者一致。以下是基于主流云厂商(阿里云、腾讯云)的通用实操步骤。

1. 准备域名与证书

确认你需要加速的域名层级。如果只需加速一级子域名,标准泛域名证书即可;若涉及多级,需购买多域名证书(SAN)或确认 CDN 是否支持深层泛域名证书。

检查点:使用 OpenSSL 查看证书详情,确认 Subject Alternative Name 是否包含 *.example.com 或具体多级域名。

openssl x509 -in your_cert.crt -text -noout | grep DNS

如果输出中仅包含 DNS:*.example.com,则无法用于 a.b.example.com

2. CDN 控制台配置

登录 CDN 控制台,找到“域名管理”或“添加域名”入口。不同厂商字段略有差异,关键配置如下:

CDN 如何配置泛域名加速支持多级子域名?
  • 加速域名:填写泛域名格式(如 *.example.com)。部分厂商要求输入 .example.com 或单独选择“泛域名”选项。
  • 业务类型:根据实际业务选择(如图片小文件、全站加速)。
  • 证书配置:上传对应的泛域名证书。部分服务商支持“自动匹配”,但仍建议手动指定以避免边缘节点回源时握手失败。
  • HTTPS 设置:部分 CDN 在泛域名配置下对 HTTPS 设置有特殊要求,请以控制台实际提示为准。若开启强制 HTTPS,确保证书无误。

注意:阿里云 CDN 添加泛域名时可能需要验证域名所有权,请确保 DNS 解析已生效或按提示添加 TXT 记录。

3. DNS 解析设置

前往域名 DNS 服务商处,添加一条 CNAME 记录。

  • 主机记录:*
  • 记录类型:CNAME
  • 记录值:CDN 服务商提供的 CNAME 地址(如 example.cdn.dns

警告:如果已有具体的子域名 A 记录(如 www.example.com),需先删除或调整优先级,避免具体记录覆盖泛解析。

4. 源站适配与安全

源站服务器(如 Nginx)需要配置 server_name 支持泛域名,否则 CDN 回源时源站可能拒绝请求。

正确的 Nginx 配置:

server {
    listen 80;
    server_name .example.com; 
    # 注意:Nginx 中 .example.com 可匹配 example.com 及所有子域名
    # 避免使用 *.example.com 可能导致配置加载失败
    
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }
}

源站安全防护(防止 IP 泄露):

CDN 如何配置泛域名加速支持多级子域名?

配置泛域名后,若源站未限制仅允许 CDN IP 访问,攻击者可能绕过 CDN 直接解析源站 IP 进行攻击。建议在源站防火墙或云安全组设置白名单。

云安全组示例(概念):

  • 入方向规则:允许 TCP 80/443 端口。
  • 源 IP 范围:仅填写 CDN 服务商公布的节点 IP 段(需定期更新)。

iptables 示例(仅限固定 IP 段):

iptables -A INPUT -p tcp -s 1.2.3.0/24 `--dport` 80 -j ACCEPT
iptables -A INPUT -p tcp `--dport` 80 -j DROP

若 CDN IP 动态变化,建议配合 HTTP Header 校验(如校验特定 User-Agent 或自定义 Header)。

怎么验证是否生效

配置完成后,不要立即切换业务流量,先通过测试子域名验证。

CDN 如何配置泛域名加速支持多级子域名?

1. DNS 解析验证

使用 dig 命令确认泛域名已解析到 CDN CNAME。

dig test.example.com

观察 ANSWER SECTION 是否包含 CDN 提供的 CNAME 地址。

2. HTTPS 证书验证

使用 curl 检查 SSL 握手是否成功,确保证书链完整且域名匹配。

curl -vI https://test.example.com

查看输出中是否有 SSL 证书报错,以及 Server 头是否显示 CDN 标识。

3. 缓存命中验证

多次请求同一资源,检查响应头中的 X-Cache 或类似字段(不同 CDN 字段名不同,如 X-Cache-Lookup, Via 等)。

如果显示 MISS 后变为 HIT,说明 CDN 缓存生效。

常见风险与排查

  • 证书层级不匹配(高危):最常见的问题。*.example.com 证书无法用于 a.b.example.com,会导致浏览器报 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 或证书域名不符。务必确认业务子域名深度,必要时申请多域名证书。
  • 缓存污染:泛域名下所有子域名默认可能共享缓存规则。如果不同子域名业务逻辑不同(如 api.example.comstatic.example.com),建议在 CDN 控制台配置不同的缓存 Key 或分开添加域名。
  • 源站暴露补救:若发现源站 IP 已泄露,立即更换源站 IP,并严格配置安全组白名单,仅允许 CDN 回源 IP 段访问。
  • DNS 优先级:具体子域名的 DNS 记录优先级高于泛域名记录。如果之前为 www.example.com 设过 A 记录,添加泛域名后 www 可能不会走 CDN,需单独修改 www 记录为 CNAME。