如何通过CNAME将Netlify子域名指向AWS S3存储桶?
没问题,我一步步帮你搞定这个配置,让dl.mysite.com直接指向你的S3存储桶。既然你的主域名DNS由Netlify管理,只要把S3和Netlify的配置做好就行:
配置步骤
1. 先确保你的S3存储桶配置正确
要让用户能直接通过子域名访问S3里的文件,首先得把存储桶的权限和托管设置弄对:
- 打开AWS S3控制台,找到你的
dl.mysite.com存储桶。 - 开启静态网站托管(在「属性」标签页里找这个选项),开启后会生成一个S3网站端点,比如
dl.mysite.com.s3-website-us-east-1.amazonaws.com(具体地址取决于你的存储桶区域),把这个地址记下来,后面要用。 - 配置桶策略,允许公开访问文件(如果需要用户直接下载的话)。可以在「权限」标签页的「桶策略」里添加如下内容(记得替换成你的存储桶名):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::dl.mysite.com/*" } ] }
- 另外,确保存储桶里的文件(比如
file.pdf)的权限设置为「公有读」,或者通过桶策略统一控制访问权限。
2. 在Netlify中配置子域名和DNS记录
接下来回到Netlify控制台,把dl.mysite.com的DNS指向S3:
- 登录Netlify,找到你的主站点
mysite.com的项目,进入域名设置页面。 - 在「域名管理」区域点击添加域名别名,输入
dl.mysite.com,然后确认添加。 - 切换到DNS设置标签页,点击添加记录:
- 记录类型选择CNAME
- 主机名填
dl(这样对应的就是dl.mysite.com) - 值填你之前记录的S3静态网站端点(比如
dl.mysite.com.s3-website-us-east-1.amazonaws.com,不要加http://或https://) - TTL保持默认的300秒(5分钟)就行,保存这条记录。
3. 验证配置是否生效
- 等待几分钟让DNS记录生效(TTL是300秒的话,最多5分钟就会更新)。你可以用命令行工具验证:
查看输出里的CNAME记录是否指向你设置的S3端点。nslookup dl.mysite.com # 或者用dig dig dl.mysite.com - 直接访问
http://dl.mysite.com/file.pdf,如果能正常下载文件,就说明配置成功了。如果遇到403错误,检查S3的桶策略或文件权限;如果是404,确认文件确实在存储桶的对应路径下。
额外注意事项
- 如果需要支持HTTPS访问,直接用S3的静态网站端点可能不行(因为S3的默认SSL证书只针对
*.s3-website-*.amazonaws.com这类域名)。这时候可以考虑用AWS CloudFront做CDN,绑定自己的SSL证书(可以在AWS Certificate Manager免费申请),然后把Netlify的CNAME指向CloudFront的域名,这样就能实现HTTPS访问了。 - 一定要确保S3存储桶的名称和子域名
dl.mysite.com完全一致,这是S3要求的,否则CNAME解析会出问题。
内容的提问来源于stack exchange,提问作者Ray
相关产品推荐
相关产品推荐

