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

Kubernetes Ingress如何仅传递子路径到后端,剔除路径前缀

Azure AGIC Ingress 移除路径前缀配置方案

你使用的Azure Application Gateway Ingress Controller(AGIC)默认会透传完整请求路径到后端服务,因此会出现/abc前缀被一起转发的问题。要实现myhost.net/abc/*转发到后端/*的需求,通过添加AGIC专属的重写规则注解即可实现,修改后的完整配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    appgw.ingress.kubernetes.io/connection-draining: "true"
    appgw.ingress.kubernetes.io/connection-draining-timeout: "30"
    appgw.ingress.kubernetes.io/request-timeout: "300"
    appgw.ingress.kubernetes.io/health-probe-status-codes: "200-399, 401"
    kubernetes.io/ingress.class: azure/application-gateway
    # 新增重写规则注解
    appgw.ingress.kubernetes.io/rewrite-rule: |
      - source: /abc/(.*)
        destination: /$1
  name: serviceAingress
  namespace: pantry-services
spec:
  rules:
  - host: myhost.net
    http:
      paths:
      - backend:
          service:
            name: serviceA
            port:
              number: 8083
        path: /abc/*
        pathType: Prefix

配置说明

  • 新增的appgw.ingress.kubernetes.io/rewrite-rule是AGIC提供的原生重写配置,规则会提取/abc/后的所有路径片段,重写为根路径下的对应地址,原请求myhost.net/abc/xyz会转发到后端服务的/xyz路径
  • 适配了新版Ingress的networking.k8s.io/v1API版本,废弃了老旧的extensions/v1beta1版本,兼容性更好
  • 简化了路径配置,仅保留/abc/*一条匹配规则即可覆盖所有带/abc前缀的请求

如果你的AGIC版本低于1.4.0,不支持直接通过注解定义重写规则,可以先在绑定的Azure Application Gateway中手动创建重写规则集:

  • 规则匹配路径模式为/abc/*
  • 重写路径设置为/{path:2}
  • 完成后在Ingress注解中添加appgw.ingress.kubernetes.io/rewrite-rule-set: <你的重写规则集名称>即可生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:54:03