
我有一個有效的 Envoy 代理配置,它匹配兩個路由/name/foo/bar?mode=receive-data
和/name/receive-data
。 Envoy 設定檔如下所示:
static_resources:
...
filter_chains:
- filters:
- name: envoy.http_connection_manager
typed_config:
...
route_config:
virtual_hosts:
- ...
routes:
- match:
prefix: "/name/foo/bar?mode=receive-data"
...
- match:
prefix: "/name/receive-data"
...
我需要將配置從使用路由prefix
匹配更新為regex
匹配,如中所述路線.RouteMatch文件.這兩個路由定義必須以某種方式轉換為/:name/foo/bar?mode=receive-data
和/:name/receive-data
where:name
可以[a-z0-9]
。我嘗試regex:
為此編寫自己的文章,但沒有成功,所以我希望在這裡得到一些幫助。
答案1
為了找到與給定請求相符的位置,nginx 首先檢查使用前綴字串(前綴位置)定義的位置。
答案2
根據 1.13.1 的文檔:
- match:
safe_regex:
google_re2: {}
regex: "\/.*\/foo\/bar"
route:
cluster: whatever
- match:
safe_regex:
google_re2: {}
regex: "\/.*\/receive-data"
route:
cluster: somethingelse