У меня есть настройка nginx от GitLab для прослушивания 127.0.0.1:8088. Затем у меня есть системный nginx (установленный через apt-get в Ubuntu) как обратный прокси с 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, некоторые графические ресурсы на странице и Gravatar используют схему HTTP. Как мне решить эту проблему?
Конечно я понимаю, что могу настроить gitlab.rb
использовать HTTPS-URL. Однако когда это будет сделано, GitLab начнет запрашивать сертификаты для настройки собственного nginx. Мне действительно нужен только собственный nginx для работы в HTTP с локальной обратной связью.
Я знаю, что это старый вопрос, но,
нано /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