CNAME 域名配置最佳实践

更新时间:
复制 MD 格式

CNAME 专用域名是 OSS 提供的专用中间域名,用于替代标准的 OSS Endpoint(*.aliyuncs.com)作为自定义域名的 CNAME 解析目标。使用 CNAME 专用域名可以让自定义域名的解析链路与 aliyuncs.com 主域名解耦,在标准 Endpoint 出现解析异常或被封禁时保障 OSS 访问的稳定性和可靠性。

工作原理

CNAME 专用域名由 OSS 提供,作为自定义域名与 OSS Bucket 之间的中间域名承接 DNS CNAME 解析。核心特征如下:

  • 仅用于 DNS CNAME 解析,不可直接访问该域名。

  • 需搭配客户自定义域名使用。

域名格式

CNAME 专用域名的格式:<BucketName>.<Region>.<CNAME 专用域名后缀>

示例

地域

示例

中国内地

my-bucket.cn-hangzhou.taihangxxx.cn

海外地域

my-bucket.ap-southeast-1.thepacificxxx.com

与标准 Endpoint 的区别

对比项

标准 Endpoint

CNAME 专用域名

格式

bucket.oss-<region>.aliyuncs.com

中国内地:bucket.region.taihang<random-suffix>.cn
海外地域:bucket.region.thepacific<random-suffix>.com

可直接访问

否(仅用于自定义域名 DNS CNAME 解析)

适用场景

  • 自定义域名绑定 OSS Bucket,需要稳定的 CNAME 解析目标。

  • 标准 Endpoint 遭遇 DNS 解析异常或封禁时的可靠备选方案。

  • 需要智能 DNS 解析优化访问路径的业务场景。

使用方式选择

将自定义域名的 CNAME 记录指向 CNAME 专用域名有两种方式,根据业务链路是否引入 CDN 加速二选一。

使用方式

适用场景

自定义域名直接绑定 OSS

拥有自定义域名,希望通过该域名直接访问 OSS Bucket 中的资源。

通过 CDN 加速访问 OSS

通过 CDN 加速访问 OSS 资源,同时使用 CNAME 专用域名作为 CDN 回源地址,提升回源稳定性。

前提条件和限制

前提条件

  • 已开通 OSS 服务:确保已拥有阿里云 OSS Bucket。

  • 已备案域名(中国内地地域):若 Bucket 位于中国内地地域,自定义域名必须完成 ICP 备案。

  • 域名 DNS 管理权限:需具备在 DNS 服务商处修改解析记录的权限。

  • OSS 控制台操作权限:需具备 Bucket 域名管理的操作权限。

使用限制

限制项

说明

域名唯一性

同一个自定义域名只能绑定到一个 Bucket。

域名绑定必要性

必须在 OSS 控制台完成绑定后 CNAME 才能生效。

访问方式

CNAME 专用域名不可直接访问,仅作为 CNAME 目标。

重要
  • 自定义域名必须在 OSS 控制台完成与目标 Bucket 的绑定。若未绑定直接配置 CNAME 解析,可能导致跨租户访问风险。

  • 严格遵循系统分配的 CNAME 专用域名。服务保障范围仅限于系统分配的 Bucket 正确关联的 CNAME 专用域名,使用任何非官方提供的、自行推测或构造的域名的行为,由此产生的任何后果或损失将由用户自行承担,OSS 概不负责。

自定义域名直接绑定 OSS

拥有自定义域名(例如 static.example.com),希望通过该域名直接访问 OSS Bucket 中的资源。

步骤一:在 OSS 控制台绑定自定义域名

  1. 前往Bucket列表,单击目标Bucket名称。

  2. 在左侧菜单栏单击Bucket 配置 > 域名管理

  3. 单击绑定域名

  4. 输入自定义域名(例如 static.example.com)后确认绑定。

步骤二:获取 CNAME 专用域名

绑定完成后,系统会分配一个 CNAME 专用域名,格式:<BucketName>.<Region>.<CNAME 专用域名后缀>。查看方式如下:

  1. 前往Bucket列表,单击目标Bucket名称。

  2. 在左侧菜单栏单击概览

步骤三:配置 CNAME 解析记录

登录 DNS 管理平台(如云解析DNS),添加 CNAME 解析记录:

记录类型

主机记录

记录值

CNAME

例:static

例:my-bucket.cn-hangzhou.taihangxxx.cn

步骤四:验证配置

等待 DNS 生效后(通常 1~10 分钟),通过以下方式验证:

# 检查 DNS 解析是否正确
dig static.example.com CNAME

# 验证访问是否正常
curl -I http://static.example.com/test.txt
说明
  • CNAME 记录与 A 记录不能共存于同一主机记录,如有冲突需先删除 A 记录。

  • 配置 CNAME 前务必先在 OSS 控制台完成自定义域名绑定。

通过 CDN 加速访问 OSS

通过 CDN 加速访问 OSS 资源,同时使用 CNAME 专用域名作为 CDN 回源地址,提升回源稳定性。CDN 加速的完整配置流程请参见通过 CDN 加速访问 OSS,此处仅说明与本方案相关的关键配置。

步骤一:在 OSS 控制台绑定自定义域名

  1. 前往Bucket列表,单击目标Bucket名称。

  2. 在左侧菜单栏单击Bucket 配置 > 域名管理

  3. 单击绑定域名

  4. 输入自定义域名(例如 static.example.com)后确认绑定。

步骤二:配置 CDN 回源

在 CDN 控制台配置回源时,按以下方式设置源站信息默认回源HOST

配置项

说明

源站信息

选择源站域名,并填写 CNAME 专用域名,例如 my-bucket.cn-hangzhou.taihangxxx.cn

默认回源HOST

必须填写自定义域名(例如 static.example.com)或 Bucket 的标准域名(例如 my-bucket.oss-cn-hangzhou.aliyuncs.com)。

说明

强烈建议将默认回源HOST配置为自定义域名。若此字段仍配置为 Bucket 的标准域名,当该通用域名遭遇应用层(七层)封禁时,回源请求将同样失败,从而导致服务中断。

重要
  • 回源私有Bucket时,务必开启阿里云OSS私有Bucket回源

  • 修改源站信息为 CNAME 专用域名时,回源 Host 头必须保持不变。OSS 通过 Host 头识别目标 Bucket,若 Host 头与 Bucket 不匹配将导致访问失败。

步骤三:配置 DNS 指向 CDN

将自定义域名的 CNAME 记录指向 CDN 分配的加速域名:

记录类型

主机记录

记录值

CNAME

例:static

例:static.example.com.w.kunlungem.com

步骤四:验证配置

# 检查 CDN 加速是否生效
curl -I http://static.example.com/test.txt -v

# 确认响应头中包含 CDN 节点信息,如 Via 或 X-Cache 字段
说明
  • 第三方 CDN(非阿里云 CDN)回源 OSS 时,同样建议将回源地址配置为 CNAME 专用域名。

  • 回源协议建议与 OSS 配置保持一致(HTTP 或 HTTPS)。

  • CDN 缓存策略建议针对静态资源设置较长的缓存时间,动态请求设置为不缓存。

常见错误与排查

CNAME 配置后访问返回 404 或 NoSuchBucket

原因:自定义域名未在 OSS 控制台完成绑定,或绑定的 Bucket 不正确。

排查步骤

  1. 登录 OSS 控制台,确认域名已正确绑定到目标 Bucket。

  2. 检查 CNAME 记录值是否与 OSS 分配的专用域名完全一致。

  3. 确认 Bucket 名称和 Region 无误。

DNS 解析未生效

原因:DNS 记录配置有误或尚未传播完成。

排查步骤

# 检查当前解析结果
dig static.example.com +short

# 指定 DNS 服务器查询(排除本地缓存影响)
dig static.example.com @8.8.8.8

常见原因

  • CNAME 记录与已有 A 记录冲突。

  • DNS 配置中主机记录填写错误(如多写了主域名部分)。

  • DNS TTL 缓存未过期,需等待旧缓存失效。

访问返回非预期内容

原因:未在 OSS 控制台绑定域名,系统采用了路径式解析,可能访问到非目标 Bucket。

解决方案

  1. 立即在 OSS 控制台完成域名与正确 Bucket 的绑定。

  2. 绑定完成后重新验证访问内容是否正确。

警告

未绑定域名的 CNAME 访问可能导致用户看到与预期不符的第三方内容,造成安全风险和品牌声誉影响。

CDN 回源失败(403/400)

原因:CDN 回源 Host 头配置不正确。

排查步骤

  1. 确认 CDN 默认回源HOST是否设置为自定义域名或 Bucket 标准域名。

  2. 确认回源地址与 Host 头不应混淆:

    • 源站信息:CNAME 专用域名(用于 DNS 解析寻址)。

    • 默认回源HOST:自定义域名或 Bucket 标准域名(用于 OSS 识别 Bucket)。

常见问题

CNAME 专用域名可以直接在浏览器中访问吗?

不可以。CNAME 专用域名仅作为 DNS CNAME 解析的目标地址,不支持直接访问。需要通过绑定的自定义域名或 Bucket 标准域名访问 OSS 资源。

为什么推荐使用 CNAME 专用域名而非标准 Endpoint?

CNAME 专用域名具备独立的解析链路,不依赖 aliyuncs.com 主域名。当标准 Endpoint 出现解析异常或被封禁时,CNAME 专用域名仍可正常工作,有效保障业务连续性。

配置 CNAME 专用域名后,原有的标准 Endpoint 还能使用吗?

可以。CNAME 专用域名是额外的访问路径,不影响标准 Endpoint 的正常使用。可以同时保留两种方式。

多个自定义域名可以指向同一个 CNAME 专用域名吗?

可以。只要多个自定义域名都已在 OSS 控制台完成与同一个 Bucket 的绑定,即可将它们的 CNAME 记录都指向该 Bucket 对应的 CNAME 专用域名。

如何确认当前使用的 CNAME 专用域名是否正确?

登录 OSS 控制台,进入目标 Bucket 的概览页面,查看系统分配的 CNAME 域名。确保在 DNS 配置中使用的记录值与控制台显示的完全一致。

使用 CNAME 专用域名是否需要额外付费?

不需要。CNAME 专用域名是 OSS 服务的基础能力,使用该域名不产生额外费用。OSS 访问费用按照正常计费规则收取。