我已经在pound后面的服务器上安装了GitLab 7.8.4,它终止了我的HTTPS连接。
如何配置GitLab以始终假设它是通过HTTPS访问的,而不让它也处理HTTPS连接?
在实践中,我看到以下问题:
我正在向我的GitLab实例添加GitHub身份验证,并尝试使用我的GitHub帐户登录GitLab。只要一切都通过HTTP,这样就可以正常工作。但是,如果我将HTTPS地址用于我的GitLab实例,那么使用GitHub进行身份验证将失败。
问题似乎是GitLab将HTTP地址传递给GitHub,如下所示:
https://github.com/login/oauth/authorize?response_type=code&client_id=[...]&redirect_uri=http%3A%2F%2Fgitlab.myurl.com%2Fusers%2Fauth%2Fgithub%2Fcallback&state=[...]&scope=user%3Aemail
然后GitHub回复:
/?error=redirect_uri_mismatch&error_description=The+redirect_uri+MUST+match+the+registered+callback+URL+for+this+application.&error_uri=https%3A%2F%2Fdeveloper.github.com%2Fv3%2Foauth%2F%23redirect-uri-mismatch&state=[...]
我从不想用http-only访问我的GitLab实例。如何在不处理HTTPS本身的情况下强制GitLab向GitHub报告https://
网址?
答案 0 :(得分:2)
虽然@josch已经给出了他特定问题的答案,但我还有另一个案例,即使用不同的解决方案。
在Apache代理后面运行GitLab 7.7.2("来自")时,尝试使用我的GitHub帐户进行授权时出现同样的错误,即使我使用了
RequestHeader set X-Forwarded-Proto "https"
在网站配置中。
事实证明,该修补程序是将GitHub上的OAuth Authorization callback URL
协议设置为http://
而不是https://
,尽管该网站仅通过SSL公开提供。
答案 1 :(得分:1)
经过一番游戏,我发现在nginx配置中设置以下内容可以解决问题:
proxy_set_header X-Forwarded-Proto https;
由于我总是希望通过https访问我的gitlab实例,这对我来说效果很好,现在似乎也可以使oauth成为可能。
对不起,在发布这个问题之前,我应该更长时间地玩这个问题,但也许这可以帮助其他人解决同样的问题。
答案 2 :(得分:0)
gitlab-ctl tail
让我走上了赛道。以下是适用于我的设置:
在Github的应用程序配置中,我使用了完全相同的值
我使用的值是https://MY_GITLAB_FQDN/
(MY_GITLAB_FQDN被我的实际主机名替换)。请注意方案HTTPS中的S.
在我的(外部)nginx配置中,我已经有了节
proxy_set_header X-Forwarded-Proto $scheme;
我的配置:
gitlab.rb
的nginx已禁用)答案 3 :(得分:0)
就我而言,问题是通过设置 external_url
变量解决的
在 omnibus config
https
协议