Kubernetes Nginx Ingress rewrite-target重写规则未按预期生效求助
问题根因
你遇到的捕获组失效问题由两个配置缺失导致:
- 未开启Ingress Nginx的正则路径匹配开关,path字段内的正则规则未被识别,捕获组为空
- 使用了
Prefix类型的pathType,该类型为Kubernetes原生前缀匹配逻辑,不会将正则捕获组传递给rewrite规则
修复方案
修改Ingress配置如下:
kind: Ingress metadata: name: ingress-resource annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/enable-rewrite-log: "true" # 新增:开启正则路径匹配 nginx.ingress.kubernetes.io/use-regex: "true" spec: rules: - host: "test.gamedrive.cc" http: paths: - path: /player-gateway(/|$)(.*) # 修改:将pathType改为ImplementationSpecific,交由Ingress Nginx处理正则 pathType: ImplementationSpecific backend: service: name: player-gateway port: number: 80
修改后重新apply配置即可生效,此时请求/player-gateway/health/startup会被正确重写为/health/startup返回200。
内容的提问来源于stack exchange,提问作者Tkaewkunha
相关产品推荐
相关产品推荐

