我有一个有效的 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
以某种方式,: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