Nginx como proxy reverso para GitLab com SSL?

4

Eu tenho a configuração nginx do GitLab para ouvir em 127.0.0.1:8088. Então eu tenho um sistema nginx (instalado via apt-get no Ubuntu) configuração como proxy reverso com 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;
    }
}

Isso funcionou bem e, basicamente, todas as solicitações são encaminhadas para HTTPS. No entanto, porque o GitLab ainda acha que está rodando em HTTP, alguns recursos gráficos na página, e o Gravatar está usando o esquema HTTP. Como resolvo esse problema?

É claro que entendo que posso configurar gitlab.rb para usar um URL HTTPS. No entanto, quando isso for feito, o GitLab começará a solicitar certificados para configurar seu próprio nginx. Eu realmente só preciso de seu próprio nginx para rodar em HTTP, em loopback local.

    
por He Shiming 05.09.2015 / 16:18

1 resposta

1

Eu sei que é uma pergunta antiga, mas

nano /etc/gitlab/gitlab.rb

set external_url="https://whatever"

, em seguida, encontrar o caminho certo para baixo na área nginx.

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

isto assumirá que seu SSL é construído em um proxy mais distante. E url reescrever tudo http para https

    
por 25.08.2017 / 14:37