在 Linux 上部署的 GitLab 开启 HTTPS,通常有两种常见场景:
你需要:
gitlab.example.com.crtgitlab.example.com.key如果是 Let’s Encrypt:
sudo certbot certonly --webroot -w /var/www/letsencrypt -d gitlab.example.com
证书一般在:
/etc/letsencrypt/live/gitlab.example.com/
编辑配置文件:
sudo vim /etc/gitlab/gitlab.rb
修改或添加以下内容:
external_url 'https://gitlab.example.com'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"
如果是 Let’s Encrypt:
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.example.com/privkey.pem"
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
或(iptables):
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
如果你用 外部 Nginx:
external_url 'https://gitlab.example.com'
gitlab_rails['trusted_proxies'] = ['127.0.0.1']
nginx['enable'] = false
sudo gitlab-ctl reconfigure
server {
listen 443 ssl;
server_name gitlab.example.com;
ssl_certificate /etc/nginx/ssl/gitlab.crt;
ssl_certificate_key /etc/nginx/ssl/gitlab.key;
location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
curl -I https://gitlab.example.com
浏览器访问:
https://gitlab.example.com
如果你能告诉我:
我可以给你更精准的配置示例。