如何在Ingress YAML中为两个路径配置rewrite-target
解决Ingress rewrite-target配置问题
你的问题出在rewrite-target未结合捕获组处理/mf2路径的请求转发,导致mf2的静态资源请求被错误路由到mf1服务。以下是正确的配置方案:
修正后的Ingress配置
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: http-ingress annotations: kubernetes.io/ingress.class: public nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/use-regex: "true" spec: rules: - http: paths: - path: /()(.*) pathType: Prefix backend: service: name: mf1 port: number: 80 - path: /mf2(/|$)(.*) pathType: Prefix backend: service: name: mf2 port: number: 80
配置说明
- 开启正则匹配:添加
nginx.ingress.kubernetes.io/use-regex: "true"注解,确保路径的正则捕获组生效。 - mf1路径配置:
/()(.*)用两个捕获组,$2会匹配根路径下所有子路径,重写后请求会正确转发到mf1服务的对应路径。 - mf2路径配置:
/mf2(/|$)(.*)中,第一个捕获组匹配/mf2后的斜杠或路径结尾,第二个捕获组匹配后续子路径;rewrite-target: /$2会将请求重写为mf2服务根路径下的对应子路径(例如请求/mf2/css/style.css会被转发到mf2服务的/css/style.css)。
内容的提问来源于stack exchange,提问作者Furkan Öztürk
相关产品推荐
相关产品推荐

