2026年9月30日 · 阅读约 6 分钟
如何为存储桶文件链接使用自己的域名
像 https://files.example.com/report.pdf 这样的链接看起来更可信,更换存储服务商后依然有效,也不会暴露你的存储桶名称。各大服务商都能通过 HTTPS 在你自己的域名上提供存储桶内容,只是做法各不相同。
Cloudflare R2
最简单的一种。域名必须是与存储桶同一 Cloudflare 账号下的一个 zone。
- 打开存储桶的 Settings,在 Custom Domains 下选择 Add。
- 输入
files.example.com,检查 DNS 记录,然后选择 Connect Domain。
Cloudflare 会替你创建 DNS 记录和证书。详见如何公开 R2 存储桶。
Amazon S3 搭配 CloudFront
S3 本身无法在自定义域名上提供 HTTPS,所以需要在前面加一层 CloudFront:
- 在 us-east-1 区域的 AWS Certificate Manager 中为
files.example.com申请证书(CloudFront 只使用该区域的证书),并通过 DNS 完成验证。 - 创建一个以你的存储桶为源站、使用 Origin access control 的 CloudFront 分配,让存储桶保持私有。应用 CloudFront 建议的存储桶策略。
- 把
files.example.com添加为 alternate domain name,并选择该证书。 - 在你的 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 这样的子域名上配置更简单。
添加自定义域名后,旧链接会失效吗?
不会。服务商原来的地址会和自定义域名同时可用。只有之后创建的链接才会使用新域名。
可以换到另一家服务商并保留原有链接吗?
可以,这正是使用自己域名的最大好处之一。用相同的键把文件复制到新存储桶,把域名指向它,现有链接就能继续使用。