如何配置AWS使abc.io主域名与/w/*路径指向不同资源?
AWS配置方案:实现abc.io分路径访问不同服务
1. 先搞定EC2的公网访问
- 给EC2实例绑定弹性公网IP,或者配置负载均衡(高可用场景),确保营销网站能通过公网正常访问,记下EC2的公网IP或负载均衡域名。
2. 用CloudFront做路径路由
CloudFront是核心,用来根据不同路径把请求转发到Amplify和EC2:
- 进入CloudFront控制台创建新分配:
- 默认源选择Amplify应用的域名(在Amplify控制台的应用设置里能找到,格式类似
abc-xxxxxx.amplifyapp.com)。 - 添加第二个自定义源:输入EC2的公网IP或负载均衡域名,端口选营销网站用的(比如80或443)。
- 默认源选择Amplify应用的域名(在Amplify控制台的应用设置里能找到,格式类似
- 配置行为规则:
- 保留默认行为(路径模式
/*),指向Amplify源,处理根路径及所有非/w/*的请求。 - 新增行为:路径模式设为
/w/*,目标源选EC2对应的源,缓存策略按需选(营销网站如果是动态内容,选「CachingDisabled」)。
- 保留默认行为(路径模式
- 配置SSL证书:在CloudFront的自定义SSL证书选项,选择ACM(AWS证书管理器)中申请的
abc.io证书注意:证书必须在us-east-1区域申请。 - 创建完成后,记下CloudFront的分配域名(类似
d1234567890.cloudfront.net)。
3. Route53域名指向CloudFront
- 进入Route53控制台,找到
abc.io的托管区域:- 创建A记录,记录名称留空(对应根域名
abc.io),路由策略选「简单路由」,值选「别名到CloudFront分配」,然后选中刚才创建的CloudFront分配。 - 如果需要
www.abc.io也生效,同理创建对应的A别名记录。
- 创建A记录,记录名称留空(对应根域名
4. 验证生效
- 等待CloudFront部署完成(大概10-15分钟)和Route53记录生效(取决于TTL设置)。
- 访问
abc.io确认打开NextJS应用,访问abc.io/w/任意路径确认打开EC2上的营销网站。
关键注意点
- ACM证书必须在us-east-1区域申请,否则CloudFront无法识别使用。
- 如果EC2用HTTPS,要确保EC2的证书有效;测试环境可以临时选CloudFront源配置的「接受所有证书」,生产环境务必用正规证书。
- NextJS有动态路由的话,CloudFront默认行为要配置合适的缓存策略,避免动态内容被错误缓存。
内容的提问来源于stack exchange,提问作者NinjaMan
相关产品推荐
相关产品推荐

