簡體   English   中英

Istio 虛擬服務正則表達式 uri 不工作

[英]Istio virtual service regex uri is not working

在虛擬服務中,我已將 2 條路徑路由到我的服務,如下所示 -

- match:
    - uri:
        prefix: /jaeger/
    - uri:
        regex: \/oauth2\/.*jaeger.*
    route:
    - destination:
        host: oauth2-proxy
        port:
          number: 80

但是當我在路徑/oauth2/callback?code=3QxQLUqCwxVtH_GS6mWteICfisIe32yE7RE6wQIZZVw&state=wmZSZ0BHMHq3vmS_1YBWIn72pG6FkChFQbNUNipGotQ%3A%2Fjaeger%2F上發送請求時網關返回 404

現在,我也可以只使用前綴/oauth2/來處理此類 URL,但目前我有多個應用程序正在通過它們自己的 oauth2-proxies 進行身份驗證,並且此正則表達式將匹配所有這些。 所以我需要使用一個包含應用程序名稱的正則表達式,例如 jaeger 就是這種情況。

我什至在regex101上檢查過這條路徑確實與我使用的正則表達式匹配。

此外,當我使用正則表達式\/oauth2\/.*時,網關成功路由了請求。 但正如我所解釋的,我也不能使用這個正則表達式。 我在這里錯過了什么嗎?

編輯:經過進一步測試,我發現如果刪除“?” 從路徑中,istio 接受它是有效的並將請求轉發給服務。 我還嘗試了正則表達式/oauth2\/callback\?code=.*jaeger.*但這也不起作用。

我沒有意識到“?” 標記 URL 的結尾,之后的所有內容都是查詢參數。 Istio 也提供查詢參數的匹配。 以下代碼適用於我的情況 -

  - match:
    - uri:
        prefix: /jaeger/
    - uri:
        regex: \/oauth2\/callback?.*
      queryParams:
        state: 
          regex: .*jaeger.*
    route:
    - destination:
        host: oauth2-proxy
        port:
          number: 80

暫無
暫無

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

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