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

S3静态网站/api路径转发至EC2 Node服务器实现方案咨询

实现方案:CloudFront多源路由+S3静态托管+EC2 API服务

一、核心思路

放弃S3的重定向规则,改用CloudFront作为统一入口,通过配置多源(Origin)+ 路由行为(Behaviors),在边缘节点直接将/api/*请求转发到EC2的Node服务器,静态文件请求则路由到S3。全程保持请求域名不变(始终是domain.com),既利用S3+CloudFront的静态文件性能优势,又能正常处理API请求。

二、分步配置

1. 前置准备

  • 确认S3静态网站托管已配置完成,静态文件上传完毕,且通过**Origin Access Control(OAC)**限制仅CloudFront能访问桶内文件(无需开启S3公开读)。
  • EC2上的Node容器已部署成功,能正常响应/api/*路径的请求,且EC2安全组允许CloudFront IP段(或直接开放对应端口,如3000)的访问。
  • 已在AWS Certificate Manager(ACM,需在us-east-1区域申请)获取domain.com的SSL证书,用于CloudFront的HTTPS配置。

2. 创建CloudFront分发

添加两个源(Origin)

  • 静态文件源:
    • Origin域名选择S3静态网站的托管Endpoint(不是S3桶的REST API域名,格式类似your-bucket.s3-website-xx-xxxx-x.amazonaws.com)
    • Origin ID设为S3-Static-Origin
    • 配置Origin Access Control,关联之前创建的OAC,确保CloudFront能读取S3文件。
  • API服务源:
    • Origin域名输入EC2的公网IP/弹性IP(如果用容器映射了端口,无需额外配置端口,后续在行为里设置),或EC2容器服务的访问地址
    • Origin ID设为EC2-API-Origin
    • Origin Protocol Policy选择HTTPS Only(如果Node服务器配置了HTTPS)或HTTP Only(根据实际部署情况)

配置路由行为(Behaviors)

  • API路由行为:
    • Path Pattern填/api/*
    • 关联EC2-API-Origin
    • 缓存策略选择CachingDisabled(API请求多为动态内容,无需缓存)
    • 允许的HTTP方法勾选Node服务器支持的类型(如GET、POST、PUT等)
  • 默认静态文件行为:
    • 保留默认的Path Pattern(空值,匹配所有未被其他行为覆盖的请求)
    • 关联S3-Static-Origin
    • 缓存策略选择CachingOptimized(适配静态文件的缓存规则)

自定义域名与HTTPS配置

  • 在CloudFront分发的「Alternate Domain Names (CNAMEs)」中添加domain.com
  • SSL证书选择之前在ACM申请的domain.com证书

3. DNS配置

在你的DNS服务商(如Route 53)中,将domain.com的A记录指向CloudFront分发的域名。

三、为什么之前的S3路由规则无效?

你配置的S3规则是301重定向,会强制浏览器将请求跳转到ec2-domain.com,不仅暴露了EC2的独立域名,还改变了请求的域名,不符合你「同域名处理API」的需求。而CloudFront的多源路由是在边缘节点后台转发请求,用户端的请求始终是domain.com/api/*,完全透明。

四、额外优化建议

  • 如果EC2是多实例部署,建议搭配Application Load Balancer(ALB),将EC2实例挂载到ALB后,再把ALB地址作为CloudFront的API源,实现负载均衡与健康检查,提升服务稳定性。
  • 配置CloudFront WAF(Web应用防火墙),对API和静态文件请求添加安全防护,拦截恶意流量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:40:44