web-dev-qa-db-ja.com

SSLを使用したGitLabのリバースプロキシとしてのNginx?

127.0.0.1:8088でリッスンするGitLabのnginxセットアップがあります。次に、HTTPSを使用したリバースプロキシとしてシステムnginx(Ubuntuにapt-getを介してインストール)をセットアップします。

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で実行されていると見なしているため、ページ上のいくつかのグラフィックリソースとGravatarはHTTPスキームを使用しています。この問題を解決するにはどうすればよいですか?

もちろん、HTTPSURLを使用するようにgitlab.rbを構成できることは理解しています。ただし、これが行われると、GitLabは独自のnginxをセットアップするための証明書の要求を開始します。ローカルループバックでHTTPで実行するには、実際には独自のnginxのみが必要です。

4
He Shiming

私はその古い質問を知っていますが、

nano /etc/gitlab/gitlab.rb

set external_url="https://whatever"

次に、nginx領域で正しい方法を見つけます。

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

これは、SSLがさらに離れたプロキシ上に構築されていることを前提としています。そして、URLはすべてのhttpをhttpsに書き換えます

1
Scott Pepper