0

我有一个自托管的 GitLab 实例(版本 14.x)。

最近我设置了 GitLab 页面。使用我当前的设置(据我所知,这是标准设置),GitLab 页面托管在:

http[s]:// group-or-username .pages.mydomain.com/ subgroups / project

我不想为每个组或用户名使用子域。我希望组或用户名成为路径的一部分:

http[s]://pages.mydomain.com/ group-or-username / subgroups / project

是否可以以这种方式配置 GitLab 页面?

GitLab 文档提到了一种解决方法。但是,这不是我的选择。

4

1 回答 1

1

无法以受支持的方式直接配置页面以获得超出文档中描述的效果。但是可能有一种方法可以通过额外的架构来解决这个限制。

原则上,您可以设置一个反向代理(比如 nginx)配置来执行此操作,前提是您实际上有通配符 DNS(或类似的解决方案),至少对于反向代理服务器本身。

像这样的东西,在 nginx 的情况下:

server {
    server_name pages.mydomain.com;
    location /(?<group_or_username>.*)/(?<pages_path>.*) {
        proxy_pass http://$group_or_username.pages.mydomain.com/$pages_path;
    }
}

您可能需要考虑使用过滤器来重写 HTML 内容,例如,修复可能使用子域模式的绝对链接。

当然,GitLab 仍然会在 Pages 设置 UI 中显示子域模式,这在很大程度上是不可避免的,除非你想修改 GitLab 源代码或在 GitLab 本身前面放置一个代理。

于 2021-12-22T22:29:00.273 回答