设置自定义环境变量
- Tier: 基础版,专业版,旗舰版
- Offering: 私有化部署
如果有需要,你可以通过 /etc/gitlab/gitlab.rb 设置自定义环境变量供 Puma、Sidekiq、Rails 和 Rake 使用。这在需要使用代理访问互联网并直接克隆外部托管的仓库到极狐GitLab 中时非常有用。在 /etc/gitlab/gitlab.rb 中提供一个 gitlab_rails['env'] 并设置为一个哈希值。例如:
rubygitlab_rails['env'] = { "http_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080", "https_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080" # "no_proxy" => ".yourdomain.com" # 如果需要让你的内部域绕过代理,使用通配符语法。不要指定端口。 }
你也可以覆盖来自其他极狐GitLab 组件的环境变量,这可能是在你处于代理后面时所需要的:
ruby1# 需要代理 Git 克隆 2gitaly['env'] = { 3 "http_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080", 4 "https_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080" 5} 6 7gitlab_workhorse['env'] = { 8 "http_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080", 9 "https_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080" 10} 11 12gitlab_pages['env'] = { 13 "http_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080", 14 "https_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080" 15} 16 17# 如果你使用 docker registry 18registry['env'] = { 19 "http_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080", 20 "https_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080" 21}
极狐GitLab 将尝试使用 HTTP 基本认证,当在代理 URL 中包含用户名和密码时。
代理设置使用 . 语法进行通配。
代理 URL 值通常应为 http://,除非你的代理有自己的 SSL 证书并启用了 SSL。这意味着,即使是 https_proxy 值,你通常也应指定为 http://<USERNAME>:<PASSWORD>@example.com:8080。
当设置了 HTTP_PROXY 或 HTTPS_PROXY 环境变量,并且域名 DNS 无法解析时,DNS 重绑定保护被禁用。
应用更改
对环境变量所做的任何更改需要重新配置才能生效。
执行重新配置:
shellsudo gitlab-ctl reconfigure
故障排除
环境变量未被设置
检查你是否有多个相同 ['env'] 的条目。最后一个将覆盖之前的条目。在此示例中,NTP_HOST 将不会被设置:
ruby1gitlab_rails['env'] = { 'NTP_HOST' => "<DOMAIN_OF_NTP_SERVICE>" } 2 3gitlab_rails['env'] = { 4 "http_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080", 5 "https_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080" 6}
错误:Connection reset by peer 在镜像仓库时
如果 no_proxy 值在 URL 中包含端口号,可能会导致 DNS 解析失败。删除 no_proxy URL 中的任何端口号以解决此问题。