配置GitLab域名访问

概述

Gitlab 内置了 nginx,所以此处配置nginx代理服务器转向GitLab内置nginx

参见官网:https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab


配置Gitlab

1.0> 编辑GitLab配置文件

vim /etc/gitlab/gitlab.rb

2.0> 修改端口监听

nginx['listen_port'] = 8800

2.1> 修改Gitlab域名

external_url 'http://www.example.com'

3.0> 使配置生效

## 配置生效
sudo gitlab-ctl reconfigure
## 重启
gitlab-ctl restart


配置nginx

1.0> 配置内容如下

server{
    listen 80;
    # 外网访问域名,此域名是提供给最终用户的访问地址
    server_name 域名;

    location / {
        # 客户端请求正文的最大允许大小
        # 这个大小的非常重要,如果git版本库里有大文件,设置的太小,文件push会失败,根据情况调整
        client_max_body_size 50m;

        # 安全相关 header
        # 禁止网站被嵌入到其它网页中,如:iframe、embed等,SAMEORIGIN表示该页面仅能在相同域名页面的iframe中展示
        add_header X-Frame-Options "SAMEORIGIN" always; 
        # 当检测到XSS攻击时阻止页面加载
        add_header X-XSS-Protection "1; mode=block" always;
        # 禁止请求类型为style和script时,但MIME类型却不为text/css和JavaScript的请求
        add_header X-Content-Type-Options "nosniff" always;

        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://www.example.com:8800;
        index index.html index.htm;
    }

     # 防止爬虫抓取 
     if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot") { 
          return 403; 
     }
}

2.0> 重载nginx

sudo /usr/local/nginx/sbin/nginx -t
sudo /usr/local/nginx/sbin/nginx -s reload
或
sudo systemctl reload nginx


配置GitLab项目默认域名

编辑gitlab.yml配置文件

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

修改如下内容

gitlab:
  ## HTTP/S方式拉取项目时的域名
  host: http://www.test.com
  port: 80
  https: false

  ## SSH方式拉取项目时的域名
  ssh_host: www.test.com


其它

安装GitLab

迁移/备份/恢复GitLab

修改GitLab的root用户密码



举报

© 著作权归作者所有


1