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-datawhere: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

相關內容