You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Route 53管理Elastic Beanstalk API与CloudFront路由?

同域名分路径路由实现方案(AWS环境)

针对你需要用同一个域名实现根路径指向S3静态站、/api路径指向Elastic Beanstalk API的需求,以下是几种可行方案,按推荐优先级排序:

方案一:CloudFront 统一入口(推荐)

利用你已有的CloudFront作为流量统一入口,通过配置不同的行为规则实现路由:

  • 保留CloudFront默认行为,路径模式为Default (*),源站指向S3静态网站(确保已配置OAC或OAI保障S3的访问安全)
  • 添加新的CloudFront行为:
    • 路径模式设置为/api/*
    • 源站选择「自定义源」,填写Elastic Beanstalk API的公网域名
    • 根据API的缓存需求配置缓存策略(比如API通常不需要缓存,可设置TTL为0或启用实时日志)
    • 可选:配置路径重写,如果你的Django API根路径是/而非/api,可在「源设置」中开启路径重写,将/api/*替换为/*后转发到Beanstalk
  • Route53仅需将你的域名指向CloudFront分配的域名即可

方案二:API Gateway 作为转发层

如果需要更精细的API管控(比如授权、限流),可以用API Gateway作为统一入口:

  • 为API Gateway配置自定义域名,绑定你的DNS记录
  • 在API Gateway中创建两个资源:
    • 根资源/:配置HTTP集成,指向CloudFront静态网站的域名,转发所有根路径请求
    • /api资源:配置HTTP集成,指向Elastic Beanstalk API的域名,转发所有API路径请求
  • 注意:静态资源通过API Gateway转发会增加额外成本和延迟,仅适合API流量占比高的场景

方案三:Lambda@Edge 自定义路由(复杂场景)

如果需要更灵活的路由逻辑(比如动态路径匹配、请求头修改),可以结合CloudFront和Lambda@Edge:

  • 创建Lambda函数,在CloudFront的「查看请求」阶段触发
  • 在Lambda中判断请求路径:如果以/api/开头,将请求转发到Beanstalk API;否则转发到S3静态站
  • 将该Lambda关联到CloudFront分配,实现自定义路由逻辑
  • 此方案复杂度较高,适合有特殊路由需求的场景

通用注意事项

  • 确保所有源站的访问权限配置正确:比如Beanstalk的安全组要允许CloudFront/API Gateway的IP访问,或通过WAF限制访问来源
  • 统一SSL证书:CloudFront或API Gateway需使用覆盖你域名的SSL证书(可在ACM中申请免费证书)
  • 测试路径转发:验证/api路径的请求是否正确转发到Beanstalk,根路径是否正常返回静态资源

内容的提问来源于stack exchange,提问作者Gati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:55:16