还要从ingress三部曲最后一篇说起。
[root@test ~]# kubectl describe ingress -n ingress-nginx
Name: ingressmyapp
Namespace: ingress-nginx
Address: 10.110.65.164
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
pphqq.vicp.net
/v1 myappsvc:80 (10.244.1.3:80) ##############此处有两个子路径
/v2 mappsvc2:80 (10.244.1.4:80)
Annotations: nginx.ingress.kubernetes.io/rewrite-target: / ####直接用的最基础的rewrite
Events: <none>
但是走ingress看/v1/hostname.html时,结果并不是我想要的
官方文档
https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/rewrite/README.md
从文章可知,下面这种的配置,子路径后无论加上多少参数,都会被替换成根路径,造成回补结果不和预期
Annotations: nginx.ingress.kubernetes.io/rewrite-target: /
!!! note Captured groups are saved in numbered placeholders, chronologically, in the form $1, $2 … $n. These placeholders can be used as parameters in the rewrite-target annotation.
支持分组捕获(自己瞎起的名字,如果有别的叫法麻烦评论告诉我更正,感谢!)的内容会被存在 $x中,这个和ps的用法一致。
那我们换一种方式看看回补的效果, 基本可以解决一般的转址需求。