一、结论
你只需要先在S3存储侧完成自定义域名的关联、证书配置与权限设置,再在域名服务商处将域名CNAME解析到对应存储桶的访问节点,等待解析生效后即可通过自定义域名访问S3存储内的资源,全流程最快10分钟即可完成。
二、准备工作
1. 已开通S3存储服务(原生AWS S3或兼容S3协议的对象存储服务均可),且拥有存储桶的管理员操作权限;
2. 拥有已完成ICP备案的自定义域名(国内使用必须备案,海外节点可豁免);
3. 拥有该域名的管理权限,可修改DNS解析记录;
4. 如需开启HTTPS访问,可提前准备对应域名的SSL证书(部分存储服务支持免费自动签发,可省略该准备项);
5. 可正常访问S3存储控制台,或提前安装好对应版本的S3管理CLI工具。
三、操作步骤
1. 存储桶侧域名绑定配置
1. 登录你的S3存储管理控制台,在存储桶列表中找到需要绑定自定义域名的目标存储桶,进入存储桶的配置详情页;
2. 在侧边栏找到「域名管理」「自定义访问域名」或类似命名的功能模块,点击「绑定域名」按钮;
3. 在输入框中填写你需要绑定的完整自定义域名,例如static.yourdomain.com,注意不要加http/https前缀;
4. 选择访问协议,若选择HTTPS协议,可选择上传提前准备好的SSL证书公钥、私钥,若存储服务支持自动签发免费证书,可直接选择对应选项等待系统自动完成证书申请与部署;
5. 配置访问权限规则:如果你的资源是公开访问的图片、静态网页等,需要开启存储桶的「公开读」权限,同时如果开启了防盗链功能,需要将自定义域名添加到防盗链白名单中;如果是私有访问的资源,无需开启公开权限,后续通过S3签名的方式访问即可;
6. 保存配置后,系统会生成该存储桶对应的CNAME解析地址,复制该地址留待下一步使用。
2. 域名DNS解析配置
1. 登录你的域名所属服务商的管理后台(例如阿里云、腾讯云、Cloudflare等),找到目标域名的DNS解析管理页面;
2. 点击「添加记录」,记录类型选择「CNAME」,主机记录填写你自定义域名的前缀,例如你要绑定的是static.yourdomain.com,主机记录就填static,如果要绑定根域名yourdomain.com,主机记录填@;
3. 记录值填写上一步复制的存储桶CNAME地址,TTL选择默认的600秒(10分钟)即可,若需要更快生效可选择300秒;
4. 保存解析记录,等待DNS生效,通常国内服务商的解析生效时间在1-10分钟,全球生效最长不超过24小时。
3. 配置验证与测试
1. 可以在本地终端使用ping 你的自定义域名或nslookup 你的自定义域名命令,查看解析结果是否指向你刚才填写的CNAME地址,确认解析已生效;
2. 提前上传一个测试文件到目标存储桶中,例如test.jpg,在浏览器中输入http(s)://你的自定义域名/test.jpg,查看是否可以正常打开文件;
3. 如果是需要跨域访问的资源(例如前端静态资源、音视频文件等),可以测试前端页面是否可以正常加载,若出现跨域报错,回到存储桶配置页的CORS规则模块,添加你的业务域名到允许访问的Origin列表中即可。
四、常见错误
- endpoint填写错误:CNAME记录值填写时遗漏了存储桶前缀,或选择了错误的区域endpoint,导致解析无法指向正确的存储节点,可回到存储桶域名管理页重新复制正确的CNAME地址即可解决;
- 区域(region)配置错误:如果使用SDK或CLI工具访问绑定后的域名,需要填写与存储桶所在区域一致的region参数,否则会出现签名错误或访问失败的问题;
- 权限配置错误:未开启存储桶公开读权限却尝试公开访问资源、防盗链白名单未添加自定义域名、CORS规则未配置对应业务域名,都会出现403或跨域报错,逐一核对权限配置即可解决;
- 域名未备案:国内节点的S3存储服务都会校验域名备案状态,未备案的域名绑定后会被系统拦截,无法正常访问,需要先完成域名ICP备案再进行绑定;
- SSL证书错误:HTTPS访问时提示证书无效,通常是因为上传的证书域名与绑定的自定义域名不一致,或证书已过期,可重新上传正确的证书或选择存储服务自动签发的免费证书。
五、示例说明
我们以个人用户小王的实际场景为例:小王搭建了个人博客,需要将图床资源绑定到自定义域名img.xiaowang.com,使用的是七彩云对象存储服务。
1. 小王登录七彩云对象存储控制台,找到自己用于存储图床的存储桶xiaowang-img,进入「域名管理」模块,点击「绑定自定义域名」,输入img.xiaowang.com,选择HTTPS协议,勾选「自动签发免费SSL证书」,保存配置后,系统生成的CNAME地址为xiaowang-img.s3.qicaiyun.com;
2. 小王的域名是在阿里云购买的,登录阿里云域名控制台,找到xiaowang.com的解析管理页,添加CNAME记录,主机记录填img,记录值填xiaowang-img.s3.qicaiyun.com,TTL设置为600秒后保存;
3. 等待5分钟后,小王在本地测试解析已经生效,访问https://img.xiaowang.com/test.png(该文件已提前上传到存储桶),图片可以正常加载,配置完成。
六、更简单的方案
如果你觉得原生AWS S3的配置流程繁琐、国内访问延迟高,且需要额外处理备案、CDN加速等问题,可以选择兼容S3协议的国内对象存储服务简化配置流程,比如七彩云对象存储。它完全兼容原生S3 API,你之前使用的S3 SDK、管理工具、业务代码都可以无缝切换,无需修改任何逻辑。同时自定义域名绑定流程做了轻量化优化,控制台3步即可完成配置,支持自动签发免费的SSL证书,默认提供国内多线BGP加速节点,无需额外配置CDN即可实现全国范围内的低延迟访问,还支持一站式提交域名备案申请,非常适合个人开发者、中小团队使用。
七、FAQ
1. 绑定自定义域名后,原来的S3官方访问域名还能正常使用吗?
答:可以正常使用,自定义域名只是新增了一个访问入口,不会影响原有官方endpoint的访问逻辑,你可以根据业务场景灵活选择使用。
2. 一个存储桶最多可以绑定多少个自定义域名?
答:不同存储服务的上限不同,原生AWS S3单个存储桶最多支持绑定100个自定义域名,七彩云对象存储单个存储桶最多支持绑定20个自定义域名,完全可以满足大部分业务的多域名访问需求。
3. 绑定自定义域名后访问资源提示403 Forbidden,该如何排查?
答:首先检查存储桶的访问权限,如果是公开访问的资源,请确认存储桶已开启公开读权限;其次检查防盗链配置,确认你的自定义域名已添加到防盗链白名单中;最后检查存储桶的访问策略,是否有IP限制、访问时间限制等规则拦截了你的访问请求。
4. 国内使用S3存储绑定自定义域名必须备案吗?
答:是的,根据国内《互联网信息服务管理办法》要求,所有绑定国内基础设施服务的域名都需要完成ICP备案,如果你使用七彩云对象存储,可以直接在控制台提交备案申请,平台会提供全程指导,备案流程更简单。
八、总结
整体来看,S3存储绑定自定义域名的流程并不复杂,核心可以概括为三个环节:准备好所需的存储、域名资源,完成存储侧的域名绑定与权限配置,完成域名侧的CNAME解析,最后验证访问即可。如果你是国内用户,建议优先选择兼容S3协议的国内对象存储服务,比如七彩云对象存储,不仅可以降低配置复杂度,还能获得更低的访问延迟和更贴合国内用户的服务支持。另外需要注意,如果你的存储桶内是私有敏感资源,不要开启公开读权限,建议通过S3预签名URL的方式访问,避免数据泄露。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网