温馨提示×

linux中gitlab如何ssl

小樊
32
2026-09-28 15:45:07
栏目: 云计算

在 Linux 上为 GitLab 配置 SSL(HTTPS),通常有两种常见方式:


一、使用 GitLab 自带 Nginx(推荐,最简单)

1. 准备 SSL 证书

你可以:

  • 自签名证书(测试用)
  • 购买证书
  • 使用 Let’s Encrypt(免费,推荐)

Let’s Encrypt 示例(certbot)

sudo apt install certbot
sudo certbot certonly --webroot -w /var/www/ -d gitlab.example.com

证书路径一般为:

/etc/letsencrypt/live/gitlab.example.com/fullchain.pem
/etc/letsencrypt/live/gitlab.example.com/privkey.pem

2. 修改 GitLab 配置

编辑配置文件:

sudo vim /etc/gitlab/gitlab.rb

关键配置:

external_url 'https://gitlab.example.com'

nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.example.com/privkey.pem"

如果你用 自签名证书:

nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"

3. 重新配置 GitLab

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

访问:

https://gitlab.example.com

二、使用外部 Nginx / Apache 反向代理(高级)

如果你不想用 GitLab 自带的 Nginx:

1. 禁用 GitLab Nginx

nginx['enable'] = false

2. 外部 Nginx 示例

server {
    listen 443 ssl;
    server_name gitlab.example.com;

    ssl_certificate     /etc/ssl/gitlab.crt;
    ssl_certificate_key /etc/ssl/gitlab.key;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

然后:

sudo gitlab-ctl reconfigure
sudo systemctl restart nginx

三、自签名证书快速生成(测试)

sudo mkdir -p /etc/gitlab/ssl
sudo openssl req -x509 -newkey rsa:2048 -nodes \
-keyout /etc/gitlab/ssl/gitlab.key \
-out /etc/gitlab/ssl/gitlab.crt -days 365

四、常见问题

✅ 端口被占用
✅ 防火墙未放行 443
✅ Let’s Encrypt 证书过期(需自动续期)


如果你告诉我:

  • GitLab 版本
  • 是否用 Docker
  • 是否已有域名

我可以给你更精确的配置示例。

0 踩