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

AWS中国区NLB转ALB Terraform/Terragrunt架构保留客户端源IP实现白名单

可行的IP白名单实现方案

方案1:修改转发Lambda逻辑,直接在Lambda层做IP校验

这是改造成本最低的方案:

  • NLB触发Lambda的事件 payload 中默认携带真实客户端源IP字段,你可以提前将白名单IP段配置在Lambda环境变量或AWS Parameter Store中
  • Lambda收到请求后先做源IP白名单匹配,匹配失败直接返回403响应,匹配通过再转发请求到后端ALB
  • 该方案不需要调整现有链路的其他配置,也不会有IP伪造的风险,完全符合AWS中国区的功能限制

方案2:Lambda传递真实源IP,配合ALB侧规则做校验

如果需要把白名单管控能力下沉到ALB侧统一管理,可以用该方案:

  • 转发Lambda拿到客户端源IP后,在转发请求的头中主动添加X-Forwarded-For字段为真实客户端IP
  • 配置ALB的安全组仅允许Lambda的VPC出口地址段访问,避免外部用户直接访问ALB伪造XFF头
  • 在ALB关联的AWS WAF中配置IP白名单规则,指定校验X-Forwarded-For头中的地址即可;如果不用WAF,也可以在ALB后的业务服务中读取该头字段做校验

方案3:修复Nginx部署配置,用Nginx做白名单管控

你遇到的Nginx作为NLB四层目标健康检查异常的问题可以通过配置修正:

  • 将NLB绑定的IP目标组健康检查改为TCP类型,指定Nginx监听的业务端口即可,不需要用HTTP类型健康检查;如果需要HTTP健康检查,可以在Nginx中新增/healthz路径规则默认返回200状态码,同时将NLB健康检查指定为该路径
  • Nginx中开启real_ip模块,配置信任NLB的私有地址段,即可拿到真实客户端源IP
  • 直接在Nginx中配置allow/deny规则做IP白名单管控,校验通过后再转发请求到后端ALB

关于Ingress控制器的适用性说明

Nginx-ingress、AWS-load-balancer ingress控制器都适用于该场景:

  • 如果你的业务部署在EKS集群中,可以直接将NLB绑定Nginx-ingress Controller的四层Service,在ingress规则中添加nginx.ingress.kubernetes.io/whitelist-source-range注解即可实现白名单管控
  • 只需额外配置ingress控制器的real-ip相关参数,确保能拿到NLB传递的真实客户端源IP即可,不需要额外部署ALB也能实现全链路功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:36:05