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

配置AWS CloudFront关联S3桶后无法访问EC2后端的问题咨询

问题排查与补充配置步骤

1. 为后端EC2添加CloudFront源和行为规则

你当前的CloudFront分发仅配置了S3作为唯一源,前端的API请求(比如/api/*)会被默认路由到S3而非EC2后端,这是核心问题之一。需要补充以下配置:

  • 新增EC2源:
    • Origin type选择Custom Origin
    • Origin domain填写EC2的弹性IP(避免公网IP变动)或公网域名
    • Origin protocol policy根据后端服务协议选择HTTP only或Match viewer
    • 端口填写后端服务的运行端口(如3001)
  • 新增API路由行为:
    • Path pattern设置为/api/*(匹配你的后端接口前缀)
    • Origin或源组选择刚创建的EC2源
    • Viewer protocol policy推荐设为HTTPS only
    • Cache policy选择Managed-CachingDisabled(API请求不适合缓存,防止返回旧数据)
    • 确保该行为的优先级高于默认行为(优先级数值更小)

2. 配置EC2后端的CORS规则

前端从CloudFront域名发起请求时会触发跨域检查,需在Node.js后端添加CORS配置,允许CloudFront域名访问:

// 示例:使用cors包配置
const cors = require('cors');
app.use(cors({
  origin: 'https://你的CloudFront域名.cloudfront.net',
  credentials: true // 若需要携带Cookie或认证信息则开启
}));

若未使用cors包,可手动设置响应头:

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', 'https://你的CloudFront域名.cloudfront.net');
  res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  if (req.method === 'OPTIONS') {
    return res.sendStatus(200);
  }
  next();
});

3. 验证S3源的配置一致性

你同时启用了S3静态网站托管和OAC,需确认:

  • CloudFront源的域名使用S3静态网站托管端点(格式:bucket-name.s3-website-region.amazonaws.com),而非S3 REST API域名(bucket-name.s3.amazonaws.com),否则静态网站的索引页、重定向设置可能失效。
  • 关闭S3的「阻止公共访问」设置(控制台「权限」>「阻止公共访问」),使用OAC时无需依赖ACL公开,避免权限冲突。

4. 确认EC2后端的可访问性

  • 检查后端服务是否绑定0.0.0.0而非localhost,否则仅能在EC2内部访问:
    netstat -tulpn | grep 3001
    
  • 验证EC2网络ACL规则:确保入站规则允许3001端口,出站规则允许响应流量(默认网络ACL通常允许所有,若自定义过需确认)。
  • 直接从本地访问EC2的后端接口(如http://EC2公网IP:3001/api/xxx),确认服务本身运行正常。

5. 启用CloudFront日志排查错误

开启CloudFront标准日志,定位请求失败的具体原因:

  • 在CloudFront分发的「监控」>「日志」中,开启标准日志并指定存储日志的S3桶。
  • 等待10-15分钟后查看日志,根据错误码(如403、502)和源信息排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:05:49