Gitlab https 配置内网穿透+反代 支持过程

gitlab的调试过程

主要是在使用gitlab调参配置的过程,曲折多吃尝试,没有专业背景,全靠真本事猜测。

本人跑的gitlab使用docker容器跑的,全家桶。

整个访问流程采用内网穿透到外网提供服务。这个服务器是放在家里的,通过这种方式无缝映射到外网。

image

gitlab 提供了rb脚本的配置方式,脚本地址如下:

vi /etc/gitlab/gitlab.rb

这个rb脚本主要是生成 gitlab相关服务的配置文件,如果不依赖这个rb脚本,我们完全可以自己去配置各个服务的配置。后面会提到具体有哪些服务。

更变了这个配置都需要使用reconfigure使配置生效。

gitlab-ctl reconfigure

当你修改了nginx的配置时候,你需要重启nginx服务而不是所有服务

/var/opt/gitlab/nginx/conf/gitlab-http.conf



gitlab-ctl restart nginx

当使用了docker容器后,网络采用桥接时候,外部nginx反向代理的时候,输出的git地址路径与实际访问地址不一致的时候,怎么处理?

image

我是这样处理的,外部提供为https地址,代理访问的http地址,在gitlab配置中,包含nginx配置和gitlab自己的配置,nginx配置的是他的内部代理,这个基本不能动,我们能动的就是gitla自身的配置,因为回显示的地址不一致,那么我们只需要欺骗gitlab他提供的https地址即可,如何配置:

vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

文件修改如下:

  ## GitLab settings
  gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    host: git.xxx.cn
    port: 443
    https: true

然后重启gitlab服务

gitlab-ctl restart

# 输出日志如下:

ok: run: alertmanager: (pid 12052) 0s
ok: run: gitaly: (pid 12066) 0s
ok: run: gitlab-monitor: (pid 12079) 0s
ok: run: gitlab-workhorse: (pid 12084) 0s
ok: run: logrotate: (pid 12095) 1s
ok: run: nginx: (pid 12116) 0s
ok: run: node-exporter: (pid 12124) 1s
ok: run: postgres-exporter: (pid 12133) 0s
ok: run: postgresql: (pid 12144) 1s
ok: run: prometheus: (pid 12154) 0s
ok: run: redis: (pid 12169) 0s
ok: run: redis-exporter: (pid 12173) 1s
ok: run: sidekiq: (pid 12256) 0s
ok: run: sshd: (pid 12259) 1s
ok: run: unicorn: (pid 12267) 0s

然后就是愉快的看效果了,整个域名连贯了,统一使用了https前缀。再也不担心拷贝地址不能拉代码,还得手动修改访问地址了。。

image

来源: 雨林博客(www.yl-blog.com)