Je tente d'utiliser Traefik comme proxy pour envoyer du trafic vers les environnements de révision de Gitlab. Gitlab CI peut démarrer des conteneurs docker pour exécuter une version de révision d'un projet. Je peux faire en sorte que Traefik détecte ces conteneurs et route le trafic vers eux avec ce genre de configuration dans mon fichier docker-compose:
- traefik.gitlab.frontend.rule=Host:gitlab.example.local;PathPrefixStrip:/review/$CI_BUILD_REF_NAME.$CI_PROJECT_NAME.$CI_PROJECT_NAMESPACE
- traefik.gitlab.port=80
Avec cela, je peux ouvrir "https://gitlab.example.local/review/master.project.user/ping", et obtenir ma page PONG. Mais si je vais à "https://gitlab.example.local/review/master.project.user/", l'application de test simple que j'utilise renverra une redirection 303 vers /ping qui se retrouve comme "https://gitlab.example.local/ping", et n'est pas proxifié vers l'application de révision.
> GET /review/master.10112.root HTTP/2
> Host: gitlab.example.local
> User-Agent: curl/7.54.0
> Accept: */*
>
* La connexion a changé d'état (MAX_CONCURRENT_STREAMS mis à jour)!
< HTTP/2 303
< content-type: text/html; charset=utf-8
< date: Mon, 25 Feb 2019 08:25:44 GMT
< location: /ping
< content-length: 32
<
Voir Autre.
La documentation mentionne un en-tête "X-Forwarded-Prefix" étant défini. Je ne suis pas sûr si c'est effectivement configuré. Je ne vois pas cela dans un curl -V. Est-ce que je dois avoir une application qui détecte cet en-tête et le préfixe en tant que "chemin de base" pour ses réponses? Y a-t-il un moyen de configurer Traefik pour ajouter cela au chemin renvoyé?
Y a-t-il d'autres proxys plus configurables conscients de Docker que je pourrais utiliser pour router le trafic vers des environnements de révision de gitlab adressés de manière dynamique?