Envoy 代理使用正则表达式匹配路由

Envoy 代理使用正则表达式匹配路由

我有一个有效的 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

相关内容