由於某些未知的原因,gitlab-ce的https近期出現了問題,被chrome識別出是非安全的連線。索性我們將了gitlab-ce的https改為http。但當下https基本上已經成為了標準,不啟用https好像有點說不過去。
本文我們使用nginx來做反向代理來啟用https,希望能解決gitlab-ce的證書問題。
gitlab配置
官方文件給出了詳細的配置步驟,我們參考即可:
編輯
Edit /etc/gitlab/gitlab.rb:
registry_external_url 'https://gitlab.yourdomain.com' nginx['listen_port'] = 81 nginx['listen_https'] = false
重新配置gitlab:
sudo gitlab-ctl reconfigure
- 在配置nginx時配置轉發的header項,包括但不限於:
Host, X-Forwarded-Ssl, X-Forwarded-For, X-Forwarded-Port
nginx配置
將以下程式碼新增到nginx配置檔案中,其證書位置等替換為自己的資訊。
server {
listen 443 ssl;
server_name gitlab.yourdomain.com;
ssl_certificate gitlab.yourdomain.com.crt;
ssl_certificate_key gitlab.yourdomain.com.key;
error_page 497 301 =307 https://$host:$server_port$request_uri;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://localhost:81;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Port $server_port;
}
}
配置完成後使用nginx -T
驗證配置是否成功,然後使用nginx -s reload
來使配置生效。
然後我們使用curl
來測試,看是否達到了預期:
- 訪問:http://gitlab.yourdomain.com:443 時給出重定向:http://gitlab.yourdomain.com:443
- 證書正確。
總結
看官方文件很重要,測試也很重要。