如何将Amazon S3存储桶地址映射到NameCheap自定义域名?
用第三方域名(NameCheap)绑定S3静态网站的正确配置方案
不需要在亚马逊购买域名,第三方域名完全可以绑定S3托管的网站,你之前的问题大概率出在配置细节的遗漏或冲突上,以下是完整的正确流程和错误排查点:
一、先确认S3静态网站托管的基础配置
- 确保你的S3桶已开启静态网站托管功能,桶名建议和域名完全一致(如
example.com) - 记录下S3静态网站的专属访问端点(格式类似
example.com.s3-website.eu-west-2.amazonaws.com),注意不要用S3的API端点(s3.eu-west-2.amazonaws.com/example.com),这个托管端点才是后续CloudFront的正确源地址
二、CloudFront核心配置修正
你已经配置了CloudFront,但可能踩了这些坑:
- 源域名选择错误:必须手动输入S3静态网站的托管端点,不要直接从下拉列表选S3桶(选桶会默认用API端点,导致域名绑定失败)
- SSL证书配置:必须在AWS Certificate Manager(ACM)中申请覆盖
example.com的SSL证书,且证书必须部署在us-east-1区域(哪怕你的S3在eu-west-2),否则CloudFront无法加载证书 - 行为设置:将默认行为的「查看器协议策略」设为「重定向HTTP到HTTPS」,确保用户访问http会自动跳转到https;同时检查缓存策略,避免静态资源缓存导致配置不生效
- 保存配置后,记录CloudFront分配的域名(如
d1234abcd.cloudfront.net)
三、DNS配置:二选一,避免冲突
你之前同时修改了NameCheap的DNS和Route53路由,这会导致解析冲突,必须只保留一套DNS配置:
方案1:用Route53托管DNS(推荐,支持根域名ALIAS)
- 在Route53中创建
example.com的托管区,记录托管区提供的4个DNS服务器地址 - 登录NameCheap控制台,找到你的域名,将域名的DNS服务器修改为Route53托管区的4个地址
- 在Route53托管区添加一条A记录:
- 主机记录填
@(对应根域名example.com) - 记录类型选「A - IPv4地址」
- 开启「别名」选项,目标选择你创建的CloudFront分配域名
- 主机记录填
方案2:用NameCheap原生DNS
- 确保域名的DNS服务器仍是NameCheap默认的服务器
- 添加CNAME记录:主机记录填
www(对应www.example.com),值填CloudFront的分配域名- 注意:NameCheap的根域名(
example.com)不支持直接添加CNAME,若要绑定根域名,需使用NameCheap的「URL Redirect」功能,将@重定向到www.example.com,但这种方式不如Route53的ALIAS记录稳定
- 注意:NameCheap的根域名(
四、常见错误排查
- S3桶权限问题:不要直接将桶设为公开,建议使用CloudFront的「Origin Access Control(OAC)」,并配置S3桶策略允许OAC访问
- 缓存未刷新:CloudFront配置更新后,可能需要手动刷新缓存(在CloudFront控制台的「缓存」选项中选择「创建无效」,路径填
/*) - DNS生效延迟:修改DNS服务器后,可能需要1-24小时全球生效,可通过
nslookup example.com命令检查解析是否指向CloudFront的IP
内容的提问来源于stack exchange,提问作者Centanni
相关产品推荐
相关产品推荐

