nginx ingress & rewrite-target

前端 未结 2 1445
情歌与酒
情歌与酒 2020-12-14 03:02

I have a pod that responds to requests to /api/

I want to do a rewrite where requests to /auth/api/ go to /api/.

Using an Ingress (nginx), I thought that wit

2条回答
  •  离开以前
    2020-12-14 03:47

    I don't know if this is still an issue, but since version 0.22 it seems you need to use capture groups to pass values to the rewrite-target value From the nginx example available here

    Starting in Version 0.22.0, ingress definitions using the annotation nginx.ingress.kubernetes.io/rewrite-target are not backwards compatible with previous versions. In Version 0.22.0 and beyond, any substrings within the request URI that need to be passed to the rewritten path must explicitly be defined in a capture group.

    For your specific needs, something like this should do the trick

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: myapi-ing
    annotations:
      ingress.kubernetes.io/rewrite-target: /api/$2
      kubernetes.io/ingress.class: "nginx"
    spec:
     rules:
     - host: api.myapp.com
       http:
        paths:
         - path: /auth/api(/|$)(.*)
           backend:
             serviceName: myapi
             servicePort: myapi-port
    

提交回复
热议问题