我正在运行gitlab后面的负载均衡器处理我的SSL。我将gitlab作为非SSL运行,负载均衡器处理https连接。我的问题是如何在“活动”部分中获取存储库的路径以显示https而不是http?用户在显示http时可能会感到困惑,但正确的网址是https。
答案 0 :(得分:1)
我找不到一个完美的"解决方案,但我做的是,我将external_url
配置文件中的gitlab.rb
设置为HTTPS并将以下行添加到nginx配置(/var/opt/gitlab/nginx/conf
)手动:
location / {
...
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Url-Scheme https;
...
}
用gitlab-ctl restart
重新启动Gitlab后,一切都适合我。请注意,对于下一个gitlab-ctl reconfigure
,这些更改将会丢失。
目前,我还不知道如何将所需的nginx配置直接添加到gitlab.rb
配置中。
答案 1 :(得分:1)
以下是docs: supporting proxied ssl的方法。
来自文档:
默认情况下,如果external_url包含https://,NGINX将自动检测是否使用SSL。如果您在反向代理后面运行GitLab,您可能希望在另一个代理服务器或负载均衡器上终止SSL。为此,请确保external_url包含https://并将以下配置应用于gitlab.rb:
nginx['listen_port'] = 80
nginx['listen_https'] = false
nginx['proxy_set_headers'] = {
"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on"
}
我还在我的nginx服务器块中添加了代理头:
location / {
proxy_pass http://...;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded_Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Url-Scheme $scheme;
proxy_set_header X-Forwarded-Ssl on;
}