在 CentOS 上让 GitLab 使用 HTTPS,通常有三种常见方式。下面按最推荐 → 最灵活的顺序说明。
编辑配置文件:
sudo vim /etc/gitlab/gitlab.rb
修改或添加以下内容:
external_url 'https://gitlab.example.com'
# 自动申请 Let's Encrypt 证书(需公网域名)
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@example.com']
如果只用自签名证书,跳过 letsencrypt 配置
sudo gitlab-ctl reconfigure
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
访问:
https://gitlab.example.com
sudo mkdir -p /etc/gitlab/ssl
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/gitlab/ssl/gitlab.example.com.key \
-out /etc/gitlab/ssl/gitlab.example.com.crt
external_url 'https://gitlab.example.com'
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"
sudo gitlab-ctl reconfigure
http://127.0.0.1:8080external_url 'http://gitlab.example.com'
gitlab_rails['gitlab_port'] = 8080
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:8080;
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;
}
}
sudo gitlab-ctl status
sudo netstat -tunlp | grep 443
nginx['redirect_http_to_https'] = true
如果你愿意,可以告诉我:
我可以直接给你一份可用配置。