[英]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.