Gitlab 同时开启http和https
公司gitlab和jenkins服务都是部署在云服务器上的,最早的配置gitlab只支持http,出于安全考虑之后改成https。但是问题也随之而来,gitlab默认开启https后会强制链接转发到https。这样内网服务器也就不能再用内网IP访问gitlab(云服务内网流量免费,速度还快)。所以考虑让gitlab开启https的同时保留http。
修改配置开启https
一、 申请ssl证书,阿里云实名用户可以免费申请20张ssl证书。
二、 配置nginx格式ssl证书
- 创建证书文件夹
$ mkdir -p /etc/gitlab/ssl
- 上传证书,重命名,转换格式
$ openssl x509 -outform der -in gitlab.company.com.pem -out gitlab.company.com.crt
$ ls /etc/gitlab/ssl
gitlab.company.com.crt gitlab.company.com.key
三、修改gitlab配置文件,路径/etc/gitlab/gitlab.rb
#备份gitlab.rb配置文件,后面要回退
$ cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.http
$ vim /etc/gitlab/gitlab.rb
...
#修改外部链接为域名,这里以gitlab.company.com为例
external_url 'https://gitlab.company.com'
...
#配置证书路径
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.company.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.company.com.key"
四、重新配置gitlab
gitlab-ctl reconfigure
五、 检查https是否正常
备份nginx配置文件
$ cd /var/opt/gitlab/nginx/conf/
$ cp gitlab-http.conf gitlab-https.conf
回退到http的配置
$ cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.https
$ cp /etc/gitlab/gitlab.rb.http /etc/gitlab/gitlab.rb
重新配置gitlab
gitlab-ctl reconfigure
再次开启https
这里注意:只要修改nginx配置,不能执行gitlab的重新配置,不然就只有http了
#修改gitlab-https.conf
$ /var/opt/gitlab/nginx/conf/gitlab-https.conf
...
#注释负载均衡部分
# upstream gitlab-workhorse {
# server unix:/var/opt/gitlab/gitlab-workhorse/socket;
# }
#修改nginx配置
$ vim /var/opt/gitlab/nginx/conf/nginx.conf
...
#新增一行使gitlab-https.conf生效
include /var/opt/gitlab/nginx/conf/gitlab-https.conf
#重启nginx
gitlab-ctl restart nginx
注意事项
最后一次只要修改nginx配置,重启nginx就可以。如果再次执行gitlab-ctl reconfigure就失败了
|