使用 Caddy 反向代理 GitLab
后知后觉 暂无评论

参考部署手册使用 Caddy 来反向代理 GitLab ,替换其内置的 NGiNX。

部署 Caddy

部署过程不再赘述,常见的发行版建议使用包管理进行部署,如果 GitLab 在容器环境中,那么 Caddy 也推荐使用容器部署。

然后修改配置文件,原仓库中的配置为 v1 版本兼容,在 v2 版本中已不适配,需要改为:

{
    auto_https off
    metrics
}

git.gitlab.com {
    tls /etc/caddy/ssl/git.gitlab.com.crt /etc/caddy/ssl/git.gitlab.com.key
    log {
        output file /var/log/caddy/git.access.log
        format json
        level INFO
    }

    handle_errors {
        @404 expression {http.error.status_code} == 404
        rewrite @404 /404.html
        file_server {
            root /opt/gitlab/embedded/service/gitlab-rails/public
        }

        @422 expression {http.error.status_code} == 422
        rewrite @422 /422.html
        file_server {
            root /opt/gitlab/embedded/service/gitlab-rails/public
        }

        @500 expression {http.error.status_code} == 500
        rewrite @500 /500.html
        file_server {
            root /opt/gitlab/embedded/service/gitlab-rails/public
        }

        @502 expression {http.error.status_code} == 502
        rewrite @502 /502.html
        file_server {
            root /opt/gitlab/embedded/service/gitlab-rails/public
        }
    }

    reverse_proxy http://127.0.0.1:8181 {
        header_up X-Forwarded-Ssl on
    }
}

这是禁用了 acme 获取证书,手动部署证书,如果是自动方案按官方手册修改第一部分即可。

改造 GitLab

如果是 Omnibus 方式部署的 GitLab,需要修改配置(集群修改 Rails 节点):

## 域名修改为 https:// 形式
external_url 'https://git.gitlab.com'
## 将 workhorse 从套接字改为网络,并制定监听端口
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
## 需要指定 Web 服务的启动用户,包管理形式为 caddy,手动部署的话按实际情况修改
web_server['external_users'] = ["caddy"]
## 最后关闭内置的 NGX
nginx['enable'] = false

然后重新配置服务

sudo gitlab-ctl reconfigure

附录

参考链接

如果遇到问题或者对文章内容存疑,请在下方留言,博主看到后将及时回复,谢谢!
回复 / 查看「历史评论
回答10+16=