天天看点

Istio - TrafficManagement - Rewrite

> HTTP Rewrite 将请求转发给目标服务前修改HTTP请求中指定部分的内容,这个不同于重定向,重定向对用户是可见,重写对用户是不可见的,因为是在服务端进行的。

#### 什么场景需要用到重写

在生产环境中,经常有一些 url 变更的需求,同时又需要做到对请求透明友好,又或者是类似一些 url 路径需要起多一个别名的效果,都是可以通过重写去简单的实现。

#### 通过例子来理解

Istio - TrafficManagement - Rewrite
对于 httpd-service 匹配到前缀是 /check 的请求都会被重写到 nginx-service 的 /api/health,同时参数也将一起重写。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata: 
  name: httpd-vs
spec:
  hosts:
  - httpd-service
  http:
  - match:
    - uri:
        prefix: /check
    rewrite:
      uri: /api/health
    route: 
    - destination:
        host: nginx-service      

和Redirect规则稍有不同的是,Redirect的uri只能替换全部的Path,Rewrite的uri是可以重写前缀的,即如果原来匹配条件是前缀匹配,则修改后只修改匹配到的前缀。

继续阅读