Traefik può mantenere un prefisso di percorso se un back-end reindirizza una richiesta durante il routing a quel back-end con PathPrefixStrip?


1

Sto tentando di utilizzare Traefik come proxy per inviare traffico agli ambienti di revisione di gitlab. Gitlab CI può avviare contenitori docker per eseguire una versione di revisione di un progetto. Posso fare in modo che Traefik rilevi questi container e instradi il traffico verso di loro con questo tipo di configurazione nel mio file comporre docker:

      - traefik.gitlab.frontend.rule=Host:gitlab.example.local;PathPrefixStrip:/review/$CI_BUILD_REF_NAME.$CI_PROJECT_NAME.$CI_PROJECT_NAMESPACE
      - traefik.gitlab.port=80

Con questo posso aprire " https: //gitlab.example.local/review/master.project.user/ping " e ottenere la mia pagina PONG. Ma se vado a " https: //gitlab.example.local/review/master.project.user/ ", la semplice app di test che sto usando restituirà un reindirizzamento 303 a / ping che finisce come " https: // gitlab.example.local / ping "e non viene inviato in proxy all'app di revisione.

> GET /review/master.10112.root HTTP/2
> Host: gitlab.example.local
> User-Agent: curl/7.54.0
> Accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
< HTTP/2 303
< content-type: text/html; charset=utf-8
< date: Mon, 25 Feb 2019 08:25:44 GMT
< location: /ping
< content-length: 32
<
<a href="/ping">See Other</a>.

La documentazione menziona l'intestazione "X-Forwarded-Prefix" impostata. Non sono sicuro che sia effettivamente impostato. Non riesco a vederlo in un ricciolo -V. È necessario disporre di un'app che rilevi questa intestazione e la prepari come "percorso base" alle sue risposte? C'è un modo per configurare Traefik per aggiungerlo al percorso di ritorno?

Esistono altri proxy compatibili con Docker più configurabili là fuori che potrei usare per instradare il traffico verso ambienti di revisione gitlab indirizzati dinamicamente?

Risposte:


0

Puoi dire a GitLab dove è ospitato in modo da inviare i reindirizzamenti e i collegamenti giusti

docker run -e GITLAB_OMNIBUS_CONFIG="external_url 'https://gitlab.example.local/review/master.project.user/ping'" ... gitlab/gitlab-ce:latest

https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-a-relative-url-for-gitlab


Grazie. "External_url" è ora impostato su "gitlab.example.local". Immagino che il problema sia che il reindirizzamento viene inviato dall'applicazione in esecuzione nell'ambiente di revisione. Quell'applicazione non ha questo tipo di impostazione.
Ivan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.