Ruta de coincidencia de proxy de Envoy usando expresiones regulares

Ruta de coincidencia de proxy de Envoy usando expresiones regulares

Tengo una configuración de proxy Envoy funcional que coincide con dos rutas /name/foo/bar?mode=receive-datay /name/receive-data. El archivo de configuración de Envoy se parece a esto:

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

Necesito actualizar la configuración para que no use prefixla coincidencia de rutas para que regexcoincida como se explica en elruta.RouteMatchdocumentación. Estas dos definiciones de ruta deben convertirse a /:name/foo/bar?mode=receive-datay /:name/receive-datade alguna manera, dónde :namepueden estar [a-z0-9]. Intenté escribir el mío propio regex:para esto, pero sin éxito, por lo que agradecería algo de ayuda aquí.

Respuesta1

Para encontrar una ubicación que coincida con una solicitud determinada, nginx primero verifica las ubicaciones definidas utilizando las cadenas de prefijo (ubicaciones de prefijo).

Respuesta2

Según la documentación del 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

información relacionada