2026年9月30日 · 阅读约 6 分钟

如何为存储桶文件链接使用自己的域名

像 https://files.example.com/report.pdf 这样的链接看起来更可信,更换存储服务商后依然有效,也不会暴露你的存储桶名称。各大服务商都能通过 HTTPS 在你自己的域名上提供存储桶内容,只是做法各不相同。

Cloudflare R2

最简单的一种。域名必须是与存储桶同一 Cloudflare 账号下的一个 zone。

  1. 打开存储桶的 Settings,在 Custom Domains 下选择 Add。
  2. 输入 files.example.com,检查 DNS 记录,然后选择 Connect Domain。

Cloudflare 会替你创建 DNS 记录和证书。详见如何公开 R2 存储桶。

Amazon S3 搭配 CloudFront

S3 本身无法在自定义域名上提供 HTTPS,所以需要在前面加一层 CloudFront:

  1. 在 us-east-1 区域的 AWS Certificate Manager 中为 files.example.com 申请证书(CloudFront 只使用该区域的证书),并通过 DNS 完成验证。
  2. 创建一个以你的存储桶为源站、使用 Origin access control 的 CloudFront 分配,让存储桶保持私有。应用 CloudFront 建议的存储桶策略。
  3. 把 files.example.com 添加为 alternate domain name,并选择该证书。
  4. 在你的 DNS 服务商处创建一条从 files 指向该分配 d….cloudfront.net 地址的 CNAME。

S3 静态网站端点也支持 CNAME,但只能使用普通 HTTP,而且存储桶名称必须与域名完全相同,所以 CloudFront 是更好的方案。

DigitalOcean Spaces

为 Space 启用 CDN,并在其设置中添加 custom subdomain。如果你的域名 DNS 由 DigitalOcean 管理,它可以自动签发 Let's Encrypt 证书;否则请上传你自己的证书。之后文件将通过 https://files.example.com/key 提供。

Backblaze B2

B2 通过类似 https://f003.backblazeb2.com/file/your-bucket/key 的 URL 提供公开文件。要使用自己的域名,常见做法是借助 Cloudflare:添加一条从 files.example.com 指向存储桶 f00X.backblazeb2.com 主机的代理 CNAME,再添加一条在路径前加上 /file/your-bucket 的重写规则。Backblaze 的文档介绍了这种配置,并且对经由 Cloudflare 提供的流量不收取下载费用。

域名生效之后

  • 在浏览器的无痕窗口中打开 https://files.example.com/<key> 上的一个文件,确认它可以公开访问。
  • 在所有生成链接的地方都把这个域名作为基础 URL,这样你分享的每个链接都会使用它。
  • 上传仍然通过服务商的 API 端点进行。自定义域名只用于读取。

常见问题

可以用根域名代替子域名吗?

在 Cloudflare R2 上通常可以,它支持绑定根域名。其他大多数方案依赖 CNAME,在 files.example.com 这样的子域名上配置更简单。

添加自定义域名后,旧链接会失效吗?

不会。服务商原来的地址会和自定义域名同时可用。只有之后创建的链接才会使用新域名。

可以换到另一家服务商并保留原有链接吗?

可以,这正是使用自己域名的最大好处之一。用相同的键把文件复制到新存储桶,把域名指向它,现有链接就能继续使用。