由于某些未知的原因,gitlab-ce的https近期出现了问题,被chrome识别出是非安全的连接。索性我们将了gitlab-ce的https改为http。但当下https基本上已经成为了标准,不启用https好像有点说不过去。

本文我们使用nginx来做反向代理来启用https,希望能解决gitlab-ce的证书问题。

gitlab配置

官方文档给出了详细的配置步骤,我们参考即可:

  1. 编辑Edit /etc/gitlab/gitlab.rb:

    registry_external_url 'https://gitlab.yourdomain.com'
    
    nginx['listen_port'] = 81
    nginx['listen_https'] = false
  2. 重新配置gitlab:

    sudo gitlab-ctl reconfigure
  3. 在配置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来测试,看是否达到了预期:

  1. 访问:http://gitlab.yourdomain.com:443 时给出重定向:http://gitlab.yourdomain.com:443
  2. 证书正确。

总结

看官方文档很重要,测试也很重要。


潘杰
3.1k 声望238 粉丝