我有一个有两条路径的ingress.yaml
;我的一个微前端。但是,我真的很难让rewrite-target工作。mf 1正确加载,但mf 2不能。我做了一些研究,知道我需要使用捕获组,但似乎无法正确实现。我该怎么做?
我的入口是这样的:
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
1条答案
按热度按时间ylamdve61#
您需要在
path
表达式中使用正则表达式捕获组,然后在.../rewrite-target
注解中引用该捕获组。它可能看起来像这样:
我们需要确保对于这两个规则,捕获组
$2
包含所需的路径。对于第一个规则(path: /
),我们有一个空组$1
(因为这里不需要),整个路径捕获在$2
中。对于第二个规则,我们匹配
/mf2
,后面跟着/path...
,或者作为url的结尾(这确保了我们不会错误地匹配/mf2something
),组$1
将包含/
(或者什么都不包含),路径进入$2
。在这两种情况下,重写后的路径(
/$2
)将包含我们想要的内容。