Может ли Traefik поддерживать префикс пути, если бэкэнд перенаправляет запрос при маршрутизации на этот бэкэнд с PathPrefixStrip?
Я пытаюсь использовать Traefik в качестве прокси для отправки трафика в среду обзора gitlab. Gitlab CI может запускать Docker-контейнеры для запуска обзорной версии проекта. Я могу заставить Traefik обнаружить эти контейнеры и направить трафик к ним с помощью такой конфигурации в моем файле 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
После этого я могу открыть " https://gitlab.example.local/review/master.project.user/ping " и получить свою PONG-страницу. Но если я перейду к " https://gitlab.example.local/review/master.project.user/ ", то простое тестовое приложение, которое я использую, вернет перенаправление 303 в / ping, которое в итоге будет выглядеть как " https://gitlab.example.local/ping ", и не передается в приложение для обзора.
> 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>.
В документации упоминается устанавливаемый заголовок "X-Forwarded-Prefix". Я не уверен, установлен ли он на самом деле. Я не могу видеть это в завитке -V. Это тот случай, когда мне нужно приложение, которое определяет этот заголовок и добавляет его в качестве "базового пути" к его ответам? Есть ли способ настроить Traefik, чтобы добавить это к пути возврата?
Существуют ли другие более настраиваемые прокси-серверы с поддержкой Docker, которые я мог бы использовать для маршрутизации трафика в динамически адресуемые среды обзора gitlab?
1 ответ
Вы можете указать GitLab, где он находится, чтобы он отправлял правильное перенаправление и ссылки
docker run -e GITLAB_OMNIBUS_CONFIG="external_url 'https://gitlab.example.local/review/master.project.user/ping'" ... gitlab/gitlab-ce:latest