Rota de correspondência do proxy Envoy usando regex

Rota de correspondência do proxy Envoy usando regex

Eu tenho uma configuração de proxy Envoy funcional que corresponde a duas rotas /name/foo/bar?mode=receive-datae arquivos /name/receive-data. O arquivo de configuração do Envoy é mais ou menos assim:

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"
                ...

Preciso atualizar a configuração usando prefixcorrespondência de rota para regexcorresponder conforme explicado norota.RouteMatchdocumentação. Estas duas definições de rota devem ser convertidas /:name/foo/bar?mode=receive-datae /:name/receive-datade alguma forma, onde :namepodem estar [a-z0-9]. Tentei escrever o meu próprio regex:para isso, mas sem sucesso, então gostaria de receber ajuda aqui.

Responder1

Para encontrar o local que corresponde a uma determinada solicitação, o nginx primeiro verifica os locais definidos usando as strings de prefixo (locais de prefixo).

Responder2

De acordo com a documentação em 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

informação relacionada