Назад | Перейти на главную страницу

Может ли Traefik поддерживать префикс пути, если бэкэнд перенаправляет запрос, при маршрутизации на этот бэкэнд с помощью PathPrefixStrip?

Я пытаюсь использовать Traefik в качестве прокси для отправки трафика в среды обзора gitlab. Gitlab CI может запускать контейнеры докеров для запуска тестовой версии проекта. Я могу заставить 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 с динамической адресацией?

Вы можете указать GitLab, где он размещен, чтобы он отправлял правильный редирект и ссылки

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