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のみが必要です。
私はその古い質問を知っていますが、
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に書き換えます