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

K8s集群中如何将Nginx Ingress Controller与AWS ALB集成?

AWS环境下Nginx Ingress Controller集成七层ALB的常用方案

下面是目前市场上常用的几种实现思路,兼顾ALB的七层特性和Nginx Ingress的灵活路由能力:

方案一:ALB作为前端七层入口,转发流量到Nginx Ingress Controller

  • 部署Nginx Ingress Controller时,选择用NodePort或者内部NLB暴露服务(不需要外部四层LB)。
  • 在AWS控制台/基础设施即代码工具(Terraform/CloudFormation)中创建七层ALB,配置HTTP/HTTPS监听规则,将所有目标域名的流量转发到Nginx Ingress的NodePort节点池或者内部NLB。
  • 路由流程:用户请求先到ALB,ALB完成基础七层校验(比如主机头匹配、WAF拦截),再转发到Nginx Ingress;Nginx负责URL重写、精细路径路由到后端Pod(比如把domain.com/order重写到/swagger/index.html)。
  • 核心优势:保留ALB的所有七层功能(访问日志、请求统计、WAF集成、证书管理),同时完全利用Nginx的URL重写、正则路由等高级能力。
  • 注意事项:确保ALB所在安全组开放对应端口,能访问到Kubernetes集群节点;Nginx Ingress的Service端口映射要和ALB转发端口一致。

方案二:自定义Target Group绑定ALB与Nginx Ingress Pod

  • 部署Nginx Ingress Controller时,不使用默认的LoadBalancer Service,而是创建AWS Target Group,将运行Nginx Ingress Pod的节点(或直接用Pod IP,需开启IP模式)注册到该Target Group。
  • 创建七层ALB,将监听规则指向这个Target Group,让ALB直接把流量转发到Nginx Ingress Pod。
  • 路由流程:ALB直接对接Nginx Pod,跳过中间的Service层,Nginx处理所有路由和重写逻辑。
  • 核心优势:减少流量转发环节,性能更优;同时保留ALB的七层配置项和统计数据。
  • 注意事项:如果用节点注册,需要维护节点在Target Group中的状态;如果用Pod IP,需借助Kubernetes控制器或AWS Lambda自动同步Pod IP到Target Group,避免Pod重启后流量中断。

方案三:混合使用Gateway API与Nginx Ingress Controller

  • 同时部署AWS Gateway API控制器和Nginx Ingress Controller。
  • 通过Gateway API定义HTTPRoute资源,将需要URL重写的路径(如/order、/customer)转发到Nginx Ingress的Service,其他路径可直接由ALB处理。
  • 核心优势:兼顾Gateway API的标准化路由定义,同时保留Nginx的灵活重写能力和ALB的管理特性。
  • 注意事项:需确保Gateway API控制器与Kubernetes集群版本兼容,熟悉HTTPRoute的规则配置。

附Nginx Ingress重写配置示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: service-route-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /swagger/index.html$1
spec:
  ingressClassName: nginx
  rules:
  - host: domain.com
    http:
      paths:
      - path: /order(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: orderservice
            port: { number: 80 }
      - path: /customer(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: customerservice
            port: { number: 80 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:35:38