如何在Helm Chart中配置Ingress路径重定向 去除前缀转发到后端服务
解决方案
该需求可以通过Nginx Ingress的路径重写注解实现,无需修改后端服务路径,仅修改values.yaml中的Ingress配置即可。
修改后的values.yaml Ingress配置示例
... ingress: enabled: true className: "" annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 # 若正则匹配不生效可添加下方注解显式开启正则匹配 nginx.ingress.kubernetes.io/use-regex: "true" # kubernetes.io/ingress.class: nginx // 该注释为生成Helm Chart时自动生成 hosts: - host: example.com paths: - path: /service1(/|$)(.*) pathType: ImplementationSpecific backend: serviceName: $name servicePort: http tls: [] ...
实现原理
你配置的路径规则/service1(/|$)(.*)会自动捕获两部分内容:
- $1:匹配
/service1后的斜杠或者空值 - $2:匹配
/service1/之后的所有路径内容
rewrite-target: /$2会将转发到后端服务的路径替换为/$2,匹配效果如下:
- 请求
example.com/service1/api时,$2为api,转发到后端的路径为/api - 请求
example.com/service1/时,$2为空,转发到后端的路径为/
完全符合你的使用需求。
注意事项
- 该注解为Nginx Ingress Controller专属配置,若你使用其他类型的Ingress Controller(如Traefik、APISIX等)需要参考对应控制器的路径重写规则
- 无需修改Helm自动生成的
templates/ingress.yaml模板,所有配置都可以通过values.yaml直接注入生效
内容的提问来源于stack exchange,提问作者Arzybek
相关产品推荐
相关产品推荐

