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

У меня есть рабочая конфигурация прокси Envoy, которая соответствует двум маршрутам / name / foo / bar? Mode = 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"
                ...

Мне нужно обновить конфигурацию, используя префикс маршрута , соответствующий совпадению с regex , как описано в route.RouteMatch ] документация. Эти два определения маршрута необходимо каким-то образом преобразовать в /: name / foo / bar? Mode = receive-data и /: name / receive-data , где : name может быть [a-z0-9] . Я попытался написать для этого собственное регулярное выражение: , но безуспешно, поэтому был бы признателен за помощь.

0
задан 26 January 2020 в 20:12
2 ответа

Чтобы найти местоположение, соответствующее заданному запросу, nginx сначала проверяет местоположения, определенные с помощью строк префикса (местоположения префиксов).

0
ответ дан 26 February 2020 в 00:44

Согласно документации на 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
0
ответ дан 24 March 2020 в 16:57

Теги

Похожие вопросы