我想在 Apache 反向代理后面运行 GitLab。Apache 负责所有 SSL 工作。
我已经像这样配置了 gitlab.rb。
external_url 'https://gitlab.example.com'
nginx['listen_address'] = '192.168.178.63'
nginx['listen_port'] = 8888
nginx['listen_https'] = false
nginx['external_users'] = ['http']
但是当我在浏览器中输入 192.168.178.63 时,Gitlab 总是将我重定向到https://192.168.178.63但这是错误的,gitlab 的嵌入式 Web 服务器应该只使用 HTTP 来完成所有操作
问题是
external_url 'https://gitlab.example.com'
如果我将其改为
external_url 'http://gitlab.example.com'
一切正常,但它并不能解决我的问题,因为现在 gitlab 认为外部 URL 只是 HTTP 而不是 HTTPS。
我该如何取消这个重定向到 https?Gitlab 嵌入式 Web 服务器使用 http 和反向代理 SSL 来做所有事情
谢谢。
答案1
这外部网址必须在 GitLab 中设置仅 http,https 将在你的反向代理上启用:
external_url 'http://gitlab.example.com'
进行更改后,不要忘记重新配置 Gitlab。
gitlab-ctl reconfigure
在您的反向代理设置中:
proxy_pass http://192.168.178.63:8888
答案2
即使您external_url
使用 HTTPS 配置,GitLab 也支持反向代理。
external_url
默认情况下,如果 Omnibus GitLab包含并配置 NGINX 以进行 SSL 终止,则会自动检测是否使用 SSLhttps://
。但是,如果将 GitLab 配置为在反向代理或外部负载均衡器后面运行,则某些环境可能希望在 GitLab 应用程序之外终止 SSL。为此,请进行编辑/etc/gitlab/gitlab.rb
以防止捆绑的 NGINX 处理 SSL 终止:nginx['listen_port'] = 80 nginx['listen_https'] = false
看文档更多细节。