Gitlab与本机Apache或Nginx冲突的解决方案

  • A+
所属分类:Other

由于gitlab内置了nginx,如果服务器上之前有安装nginx或apache,那么默认配置下必定会与gitlab的端口冲突。我们可以这样进行配置以解决冲突:


实际上经过上面的修改后gitlab会将nginx的配置改为监听8080端口:


如果只进行到这一步,那么冲突问题是解决了,但是用户每次访问必须打开:http://gitlab.hisune.com:8080这个地址访问,后面带了一个端口号,异常麻烦。那么如何去掉呢?很简单,由于我们服务器上之前有安装nginx或apache,那么可以用已经安装并运行的nginx或apache做代理服务器,将请求转发给gitlab的nginx。

在自己的apache中配置(nginx类似,有疑问可以自行谷歌nginx proxy):

这段配置有2个作用

1. 将gitlab域的http请求转发到https端口

2. 将gitlab域的https请求转发到gitlab的nginx 8080端口

这样配置实现了兼容apache与gitlab共存,不会出现端口冲突,我们可以直接打开http://gitlab.hisune.com,他会自动跳转到https://gitlab.hisune.com。

看起来很完美,实际上不是如此。我们看到项目中的clone地址实际上是带上了8080端口号的http链接,并且gitlab发送的所有的邮件里面的链接也是如此,如果你的浏览器判断了你的这个域是支持https的,那么他会尝试跳转到https,这个时候链接变成了https://hisune@gitlab.hisune.com:8080/hisune/docs.git,你当然是打不开这个链接的。

那么有没有办法让clone地址里面和邮件内容里面的链接去掉端口号呢?答案是有的。

实际上gitlab.rb中的external_url配置除了自动生成nginx配置以外,也是clone地址和邮件内容链接的地址,那么理论上我们改掉这个地址就可以了,但是怎么让nginx的端口进行额外配置呢?我发现了这个:

其实很简单。。。

这样在用户实际使用起来不会有不正常的感觉,也就是gitlab可以自动跳转到https去访问,并且项目中的clone地址和邮件里面的链接不会出现8080这个端口。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
沉默的螺旋

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: