在Google Domains配置AWS S3前端与Lightsail API同域名访问
解决方案建议
选项1:改用api.example.app子域名(推荐方案)
这是最省心的配置方式,完全规避DNS冲突问题:
- 在Google Domains中给
api.example.app添加A记录,指向你的Lightsail服务器公网IP - 调整API服务的访问路径(如果需要),让客户端通过
api.example.app/v1/(或保留api.example.app/api/v1/,取决于你的服务器路由配置)访问 - 主域名
example.app配置CNAME记录(Google Domains支持根域名CNAME flattening,直接添加即可),指向S3网站域名example.app.s3-website-us-east-1.amazonaws.com
这种方式的好处是API和前端的DNS解析完全独立,后续维护成本极低,多客户端切换API地址也只需要更新基础域名,不用改路径。
选项2:保留主域名/api路径,通过路由层转发
如果不想修改API的访问域名,可以用AWS CloudFront做统一入口,实现请求分流:
- 创建CloudFront分配,添加两个源(Origin):
- 默认源指向你的S3前端站点
- 第二个源指向Lightsail的API服务器(输入服务器公网IP或域名)
- 配置CloudFront的行为规则:设置路径匹配
/api/*,将这类请求转发到Lightsail源,其余请求转发到S3源 - 在Google Domains中把
example.app的A/AAAA记录设置为ALIAS类型,指向CloudFront分配的域名 - 注意配置S3桶策略,允许CloudFront访问桶内资源;同时确保CloudFront转发API所需的请求头(比如Authorization、Content-Type等)
这种方式可以保留原有的example.app/api/v1/访问路径,但需要额外维护CloudFront的配置,成本比子域名方案高一些。
内容的提问来源于stack exchange,提问作者keroana
相关产品推荐
相关产品推荐

