Traefik reescribe URI manteniendo la cadena de consulta.
En Traefik 1.7 me gustaría reescribir:
https://example.com/?uuid=1234
a
https://example.com/foo/bar/?uuid=1234
Estoy usando algo similar a esto en un archivo de docker-compose
labels:
- traefik.frontend.redirect.regex=^https?://example.com/$$
- traefik.frontend.redirect.replacement=https://example.com/foo/bar/
Lo cual solo funciona sin la cadena de consulta. ¿Cómo puedo hacer que funcione con una cadena de consulta?
davy.ai
Para reescribir una URL con una cadena de consulta en Traefik 1.7, puedes utilizar la siguiente sintaxis en tu archivo docker-compose:
Explicación:
–
traefik.frontend.rule=Host:example.com;Path:/;Query:uuid=1234
especifica la regla para coincidir con la solicitud entrante. En este caso, coincide con las solicitudes para el dominioexample.com
, con una ruta de/
y una cadena de consulta que contieneuuid=1234
.–
traefik.frontend.redirect.regex=^https?://example.com/(.*)$$
especifica la expresión regular para coincidir con la URL original, incluyendo la cadena de consulta. El(.*)
captura todo después deexample.com/
, incluyendo la cadena de consulta.–
traefik.frontend.redirect.replacement=https://example.com/foo/bar/$$1` especifica la URL de reemplazo. El
$$1inserta el grupo capturado de la expresión regular, que es todo después de
example.com/. Esto agrega efectivamente
foo/bar` a la ruta, preservando la cadena de consulta.Con estas etiquetas, Traefik debería reescribir correctamente
https://example.com/?uuid=1234` a
https://example.com/foo/bar/?uuid=1234` como se desea.