Nginx通过反向代理的方法去访问Gitlab

背景:

最近用为企业部署了Gitlab用来存放代码用。
Gitlab是一个企业能够很方便的管理代码的工具,官方提供的安装配置也很方便的部署Gitlab 到企业的服务器
Gitlab本身自带了Nginx,并且如果不改动任何配置的话,Gitlab默认会部署到80端口。
由于企业在这个服务器有很多其他的web服务,要做到Gitlab和其他的web服务共存,那么需要做一点点修改

方案:

  • 方法一:干掉Gitlab的内置Nginx,然后在外部安装nginx服务器,并且代理了Nginx的socket端口。
  • 方法二:在外部的Nginx服务器做代理转发,这个方法不需要禁用Gitlab本身的Nginx服务,只需要在外部的Nginx做相关的改动即可。
    (由于不想改动太多,以及涉及到集成化的原因,就不打算动Gitlab内部的Nginx,方案二也就是本文介绍的方法,就是用我们外部的Nginx去代理转发请求到Gitlab的服务端口)

实现(方案二):

  1. 修改Gitlab的配置文件:
    • 默认安装的Gitlab,配置文件在 :/etc/gitlab/gitlab.rb
    • 修改Gitlab的监听端口号:
      nginx['listen_port'] = 端口号
    • 修改Gitlab的域名:
      external_url '域名'
      (注意,此处的域名不需要带上端口号,因为请求是被我们前级的Nginx处理的,然后把请求转发过来这个端口,对外访问而言,还是我们的前级Nginx的80端口)
    • 最后执行 gitlab-ctrl reconfigure 让配置生效
  2. 配置Nginx服务器的站点配置文件 default.conf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    upstream  git{
    # 域名对应 gitlab配置中的 external_url
    # 端口对应 gitlab 配置中的 nginx['listen_port']
    server 域名:端口;
    }
    server{
    listen 80;
    # 此域名是提供给最终用户的访问地址
    server_name 域名;

    location / {
    # 这个大小的设置非常重要,如果 git 版本库里面有大文件,设置的太小,文件push 会失败,根据情况调整
    client_max_body_size 50m;
    proxy_redirect off;
    #以下确保 gitlab中项目的 url 是域名而不是 http://git,不可缺少
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 反向代理到 gitlab 内置的 nginx
    proxy_pass http://git;
    index index.html index.htm;
    }
    }
生活再忙,也不要忘记生活原本简单的样子
0%