正規表現を使用した Envoy プロキシ マッチ ルート

正規表現を使用した Envoy プロキシ マッチ ルート

/name/foo/bar?mode=receive-data2 つのルートとに一致する Envoy プロキシ構成が動作しています/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、説明されているように一致するように設定を更新する必要があります。ルート.ルートマッチドキュメント。これら 2 つのルート定義は、何らかの方法で および/: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

関連情報