Nginx作为GitLab与SSL的反向代理?

我有GitLab的nginx设置在127.0.0.1:8088听。 然后我有一个系统nginx(通过Ubuntu上的apt-get安装)作为反向代理与HTTPS设置:

upstream gitlab { server localhost:8088 fail_timeout=0; } server { listen 80; server_name gitlab.myhost.com; return 301 https://$server_name$request_uri; } # let gitlab deal with the redirection server { listen 443 ssl; server_name gitlab.myhost.com; ssl_certificate /srv/www/gitlab.myhost.com.unified.crt; ssl_certificate_key /srv/www/gitlab.myhost.com.key; location / { proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme; 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-Frame-Options SAMEORIGIN; proxy_pass http://gitlab; } } 

这工作正常,基本上所有的请求都转发到HTTPS。 但是,因为GitLab仍然认为它运行在HTTP,页面上的一些graphics资源,而Gravatar正在使用HTTPscheme。 我如何解决这个问题?

当然我明白我可以configurationgitlab.rb来使用HTTPS URL。 然而,当这样做,GitLab将开始要求证书来设置自己的nginx。 我真的只需要自己的nginx在本地环回HTTP运行。

我知道它的一个老问题,但是,

nano /etc/gitlab/gitlab.rb

 set external_url="https://whatever" 

然后在nginx区域find正确的方式。

 inside the nginx['proxy_set_headers'] = { directive add "X-Forwarded-Ssl" => "on", 

这将假定你的SSL是build立在一个代理进一步。 和URL重写所有http到https