Маршрут сопоставления прокси-сервера Envoy с использованием регулярных выражений

Маршрут сопоставления прокси-сервера Envoy с использованием регулярных выражений

У меня есть рабочая конфигурация прокси-сервера 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

Связанный контент