我不知道如何在没有通配符域的自托管 Gitlab 实例上设置 Gitlab 页面。例如我有1台服务器,有3个公网IP地址和域名:
然后我设置了 Omnibus 配置
/etc/gitlab/gitlab.rb
,如下所示:
external_url 'https://git.example.com'
nginx['enable'] = true
nginx['listen_addresses'] = ['10.8.0.10']
registry_external_url 'https://registry.example.com'
registry_nginx['enable'] = true
registry_nginx['listen_addresses'] = ['10.8.0.11']
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/git.example.com.crt"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/git.example.com.key"
pages_external_url 'https://pages.example.com'
pages_nginx['enable'] = false
gitlab_pages['enable'] = true
gitlab_pages['cert'] = "/etc/gitlab/ssl/pages.example.com.crt"
gitlab_pages['cert_key'] = "/etc/gitlab/ssl/pages.example.com.key"
gitlab_pages['external_http'] = ['10.8.0.12:80']
gitlab_pages['external_https'] = ['10.8.0.12:443']
例如,我有一个项目位于 https://git.example.com/somegroupname/project。我可以通过 https://registry.example.com/somegroupname/project 访问该项目的容器注册表,并使用命令
docker pull registry.example.com/somegroupname/project
拉取 Docker 映像。
我知道 GitLab Pages 将命名空间设置为 A 记录。就我而言,它的设置类似于 https://somegroupname.pages.example.com/project,但我无法使用此类域名。相反,我想将命名空间放置在这样的路径中:
https://pages.example.com/somegroupname/project
但我找不到任何设置或参数来启用此行为,并且它不适用于当前设置。所有页面都正确存储在默认路径
/var/opt/gitlab/gitlab-rails/shared/pages/
中。有人可以帮我吗?
现在应该由 GitLab 16.7 支持(2023 年 12 月):
使用没有通配符 DNS 的 GitLab 页面
以前,要创建 GitLab Pages 项目,您需要一个格式类似于
或name.example.io
的域。name.pages.example.io
此要求意味着您必须设置通配符 DNS 记录和 SSL/TLS 证书。在 GitLab 16.7 中,您可以设置一个 GitLab Pages 项目,无需 DNS 通配符。此功能是一个实验。
取消对通配符证书的要求可以减轻与 GitLab 页面相关的管理开销。由于组织对通配符 DNS 记录或证书的限制,一些客户无法使用 GitLab Pages。
我们欢迎在 issue 434372 中提供与此功能相关的反馈。