У меня есть рабочая конфигурация прокси 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
совпадение, как описано в route.RouteMatch документация. Эти два определения маршрута должны быть преобразованы в /:name/foo/bar?mode=receive-data
и /:name/receive-data
как-то где :name
возможно [a-z0-9]
. Я пытался написать свой regex:
для этого, но безуспешно, поэтому я был бы признателен за помощь здесь.
Чтобы найти местоположение, соответствующее заданному запросу, nginx сначала проверяет местоположения, определенные с помощью строк префикса (местоположения префиксов).
Согласно документации на 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