
/name/foo/bar?mode=receive-data
2 つのルートとに一致する 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