如果后端重定向请求,当使用 PathPrefixStrip 路由到该后端时,Traefik 是否可以维护路径前缀?

如果后端重定向请求,当使用 PathPrefixStrip 路由到该后端时,Traefik 是否可以维护路径前缀?

我正在尝试使用 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”标头。我不确定它是否真的设置了。我无法在 curl -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

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

相关内容