Gitlab 内置了 nginx,所以此处配置nginx代理服务器转向GitLab内置nginx
参见官网:https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-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
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.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