Назад | Перейти на главную страницу

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

Чтобы найти местоположение, соответствующее заданному запросу, 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