
У меня есть рабочая конфигурация прокси-сервера 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:
для этого, но безуспешно, поэтому я был бы признателен за некоторую помощь здесь.
решение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