
Ich habe eine funktionierende Envoy-Proxy-Konfiguration, die zwei Routen /name/foo/bar?mode=receive-data
und entspricht /name/receive-data
. Die Envoy-Konfigurationsdatei sieht ungefähr so aus:
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"
...
Ich muss die Konfiguration von der Verwendung von Routenabgleich prefix
auf regex
den Abgleich wie im Abschnitt beschrieben aktualisieren.route.RouteMatchDokumentation. Diese beiden Routendefinitionen müssen irgendwie in /:name/foo/bar?mode=receive-data
und konvertiert werden /:name/receive-data
, wo :name
. [a-z0-9]
Ich habe versucht, hierfür meine eigene zu schreiben regex:
, aber ohne Erfolg, daher wäre ich hier für Hilfe dankbar.
Antwort1
Um einen Standort zu finden, der einer bestimmten Anfrage entspricht, überprüft nginx zunächst die Standorte, die mithilfe der Präfixzeichenfolgen (Präfixstandorte) definiert sind.
Antwort2
Laut Dokumentation zu 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