Gitlab背后的ngnix和https - >不安全或不良的门户

时间:2016-02-22 17:04:35

标签: ssl nginx https gitlab reverse-proxy

我在我的ngnix后面运行gitlab。

服务器1(反向代理):启用了https的Ngnix,然后是/ git:

的配置
location ^~ /git/ {
    proxy_pass                          http://134.103.176.101:80;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Ssl on;
}

如果我在gitlab设置上没有更改任何内容,这将有效但由于外部http请求不安全,如:

'http://www.gravatar.com/avatar/c1ca2b6e2cd20fda9d215fe429335e0e?s=120&d=identicon'. This content should also be served over HTTPS.

所以,如果我更改隐藏服务器2(http gitlab)上的gitlab配置:

external_url 'https://myurl'
nginx['listen_https'] = false

如文件中所述。我将收到错误的网关错误502.没有加载页面。

我该怎么办?

编辑:通过设置:

将其黑客攻击
gitlab_rails['gravatar_plain_url'] = 'https://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon'

到https ...这工作但不是一个干净的解决方案。 (clone url仍然是http://)

1 个答案:

答案 0 :(得分:7)

我运行了类似的设置,我也遇到了这个问题。根据{{​​3}}:

  

默认情况下,当您指定以' https'开头的external_url时,Nginx将不再侦听端口80上未加密的HTTP流量。

我看到您通过HTTP和端口80转发流量,但告诉GitLab使用HTTPS外部URL。在这种情况下,您需要设置docs

nginx['listen_port'] = 80   # or whatever port you're using.

另外,请记住在更改gitlab.rb后重新加载gitlab配置。您可以使用此命令执行此操作:

sudo gitlab-ctl reconfigure

供参考,以下是我如何进行重定向:

反向代理服务器上的

Nginx配置:

location / {
    proxy_set_header Host $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-Ssl on;

    proxy_pass http://SERVER_2_IP:8888;
}

GitLab服务器上的GitLab配置文件gitlab.rb

external_url 'https://gitlab-subdomain.domain.com'
nginx['listen_addresses'] = ['SERVER_2_IP']
nginx['listen_port'] = 8888
nginx['listen_https'] = false