Fur*_*ürk 2 kubernetes kubernetes-ingress nginx-ingress
我有ingress.yaml两条路径;每个到我的一个微前端。然而,我真的很难让重写目标发挥作用。mf1 正确加载,但 mf2 不正确。我做了一些研究,知道我需要使用Captured Groups,但似乎无法正确实现这一点。我怎么做?
这就是我的入口的样子:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: http-ingress
annotations:
kubernetes.io/ingress.class: public
nginx.ingress.kubernetes.io/rewrite-target: /
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
Run Code Online (Sandbox Code Playgroud)
您需要在表达式中使用正则表达式捕获组path,然后在.../rewrite-target注释中引用该捕获组。
这可能看起来像这样:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: http-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: "/$2"
spec:
rules:
- http:
paths:
- path: /()(.*)
pathType: Prefix
backend:
service:
name: backend1
port:
name: http
- path: /mf2(/|$)(.*)
pathType: Prefix
backend:
service:
name: backend2
port:
name: http
Run Code Online (Sandbox Code Playgroud)
我们需要确保对于这两个规则,捕获组$2包含所需的路径。对于第一条规则 ( path: /),我们有一个空组$1(因为这里不需要),并在 中捕获整个路径$2。
对于第二条规则,我们匹配/mf2后跟 a/path...或 作为 url 结尾的内容(这确保我们不会错误地匹配/mf2something)。组$1将包含/(或不包含),并且路径进入$2。
在这两种情况下,重写的路径 ( /$2) 都会有我们想要的。
| 归档时间: |
|
| 查看次数: |
3014 次 |
| 最近记录: |