如何在istio虚拟服务中重写url

问题描述 投票:0回答:1

如何重写虚拟服务中的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 中的第二个值的“匹配”和“重写”方法是否存在错误?

regex kubernetes url-rewriting istio istio-gateway
1个回答
0
投票

根据提供的信息,您可以尝试以下方法:

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,这适合您的用例。

© www.soinside.com 2019 - 2024. All rights reserved.