天天看點

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是可以重寫字首的,即如果原來比對條件是字首比對,則修改後隻修改比對到的字首。

繼續閱讀