随着企业安全等级意识提高的需求越来越强力,给gitlab私有仓库部署ssl证书的需求也越来越多,但是受限于一些git版本不支持https或者某些项目的特殊需求,要求gitlab同时保留http和https。
先说gitlab,我们知道gitlab原生自带nginx模块,gitlab启动的时候这个模块就会启动起来,占用了80端口(gitlab默认以http的方式访问),但是当我们修改成https访问的时候gitlab会自动把http的访问请求转到https,这样我们要求gitlab同时支持http和https的需求就无法直接完成,需要做一部分修改。这里有两种思路:
一:外面用nginx再做一层代理。这中实现方式稍显复杂,且两次层nginx转发可能会有冲突。
二:直接使用gitlab的nginx做相关操作,推荐形式:
1.在华为云官网申请ssl证书,并将下载的nginx证书放入您的指定目录。
2.修改gitlab配置文件
sudo vim /etc/gitlab/gitlab.rb
nginx['ssl_certificate'] = "/yourdir/****.pem"
nginx['ssl_certificate_key'] = "/yourdir/****.key"
3.重建配置
sudo gitlab-ctl reconfigure
此时,测试域名已开启https访问
4.拷贝一份新的gitlab的nginx配置文件,并修改http.conf中的端口和绑定server_name
sudo cp /var/opt/gitlab/nginx/conf/gitlab-http.conf /var/opt/gitlab/nginx/conf/http.conf
5.修改/var/opt/gitlab/nginx/conf/nginx.conf文件
sudo vim /var/opt/gitlab/nginx/conf/nginx.conf
include /var/opt/gitlab/nginx/http.conf #添加这一行
6.重启nginx
sudo gitlab-ctl restart nginx
至此,配置完毕。因gitlab版本问题可能导致某些nginx启动失败,若配置过程遇到问题,可查看/var/log/gitlab/nginx/error.log。