如何重写虚拟服务中的url。 例如:
Actual url----> http//test.com/service1/v1/list
rewrite url path---->/v1/list
在匹配带有前缀“service1”的基于路径的路由后,我想删除 url 的第二个值(在本例中为“service1”)并将路径的其余部分(/v1/list)发送到目标服务。
我尝试了下面的VS,但没有成功,
spec:
hosts:
- test.com
http:
- match:
- uri:
prefix: /service1
rewrite:
uriRegexRewrite:
match: /service1(/|$)(.*)
rewrite: $2
route:
- destination:
host: service1.default.svc.cluster.local
在保留其他值的同时消除 URL 中的第二个值的“匹配”和“重写”方法是否存在错误?
根据提供的信息,您可以尝试以下方法:
apiVersion: [networking.istio.io/v1alpha3]
kind: VirtualService
metadata:
name: service1-virtual-service
spec:
hosts:
- test.com
http:
-match:
- uri:
prefix: "/service1"
rewrite:
uri: "/v1/list"
route:
- destination:
host: service1.default.svc.cluster.local
此示例使用前缀来匹配以 /service1 开头的请求,然后将 URI 重写为 /v1/list,这适合您的用例。