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

如何更新AWS安全组,仅允许Netlify上的React应用发起入站请求?

解决AWS安全组仅允许前端React应用访问的问题

先搞懂核心误区:谁在发请求?

React是前端单页应用,最终发起API请求的是用户的浏览器,不是你的前端域名服务器。你用nslookup api.domain.tld拿到的是前端域名的服务器IP,这和实际请求的源IP完全不沾边,规则当然不会生效。

分场景给出解决方案:

场景1:前端部署在AWS CloudFront+S3

  • 优先用CloudFront的Origin Access Control (OAC):配置后S3只会接受CloudFront的请求,不用维护IP段,比安全组IP限制更靠谱。
  • 如果后端是EC2/ALB,要允许CloudFront的IP段:
    1. 用命令拉取AWS官方IP列表:curl https://ip-ranges.amazonaws.com/ip-ranges.json
    2. 过滤出CloudFront的IP段(找service: CLOUDFRONT的条目),批量添加到后端安全组的入站规则,对应服务端口(比如80/443)

场景2:前端用第三方CDN(比如Cloudflare)

  • 去CDN官方文档找IP段列表,把这些段添加到后端安全组的入站规则。
  • 更安全的方式是开启CDN的Authenticated Origin Pulls,让后端只接受带CDN专属证书的请求,避免IP段变更带来的维护麻烦。

场景3:前端是纯静态CSR(无CDN、无SSR)

这种情况用户浏览器的IP是动态的,用安全组IP限制根本不现实,建议换方案:

  • 用AWS API Gateway+IAM认证,只允许带有效签名的请求访问后端。
  • 或者在后端实现JWT鉴权,验证请求里的token合法性,这比网络层的IP限制更适合前端场景。

场景4:前端是SSR(服务器端渲染)

如果请求是前端服务器转发的,那才需要把前端服务器的固定IP(或IP段)添加到后端安全组的入站规则,格式要写成x.x.x.x/32(单个IP)或对应的CIDR段。

排查当前配置的常见坑

  • 规则方向搞反:要给后端服务的安全组加入站规则,允许前端侧的IP访问,不是出站规则。
  • 端口不匹配:后端服务监听的端口(比如3000)和安全组开放的端口(比如80)不一致。
  • IP格式错误:单个IP要写成x.x.x.x/32,不能只写x.x.x.x;CIDR段的掩码要正确。
  • 本地开发代理干扰:本地用create-react-app的代理时,请求源IP是本地IP,测试时要加本地IP,但生产环境别这么配置。

验证方法

  • 发起请求后,查看后端服务器的访问日志,确认请求的源IP,对比安全组规则里是否包含这个IP。
  • 开启AWS VPC Flow Logs,查看流量是否被安全组拒绝(日志里action字段为REJECT就是被挡了)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:55:16