簡體   English   中英

istio: VirtualService url 重寫或轉發

[英]istio: VirtualService url rewriting or forwarding

我有一個帶有匹配和路由的 Istio VirtualService,重定向 url 定義如下:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-pro
spec:
  hosts:
  - "*"
  gateways:
  - my-gateway
  http:
  - match:
    - uri:
        prefix: /events
    route:
    - destination:
        host: event-service
        port:
          number: 8000
  - match:
    - uri:
        prefix: /blog
    redirect:
      uri: /
      authority: blog.mydomain.com
  - route:
    - destination:
        host: default-service
        port:
          number: 8000

這個 VirtualService 的工作方式如下:

  1. 如果請求是www.mydomain.com/events它將轉發到event-service
  2. 如果請求是www.mydomain.com/blog ,它會將主機重定向到blog.mydomain.com
  3. 如果請求是www.mydomain.com/anyother它將轉發到default-service

在第 2 種情況下,我將www.mydomain.com/blog重定向到blog.mydomain.com頁面,因為我的博客頁面托管在該域上。

現在我的問題是在重定向 URL 時,瀏覽器 URL 正在更改為blog.mydomain.com 我希望它保持不變www.mydomain.com/blogblog.mydomain.com的內容應該顯示在屏幕上。

我認為您應該使用帶有目的地的重寫https://istio.io/latest/docs/reference/config/networking/virtual-service/#HTTPRewrite

如果目的地在服務網格之外,你還需要一個 ServiceEntry

- match:
 - uri:
    prefix: /blog
 name: blog.mydomain.com
 rewrite:
   authority: blog.mydomain.com
   uri: /blog
 route:
 - destination:
    host: blog.mydomain.com

在虛擬服務中添加上面的規則,然后創建這個服務入口。

 apiVersion:.networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: blog spec: hosts: - blog.mydomain.com location: MESH_EXTERNAL ports: - number: 80 name: http protocol: HTTP resolution: DNS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM