配置gitlab使用外部Nginx服务器
打开 /etc/gitlab/gitlab.rb, 将一下代码修改
nginx['enable'] = false
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "0.0.0.0:3000" # 将3000设置成你自己的端口确保端口没有被占用
gitlab_rails['trusted_proxies'] = ['git.xxx.com'] # git.xxx.com 是你的external_url
然后重新配置gitlab和重启gitlab
$ gitlab-ctl reconfigure && gitlab-ctl restart
配置外部Nginx
在http块中添加这一行,用于防止上传文件过大的时候导致错误
http {
client_max_body_size 256m;
}
配置反向代理
server {
listen 443 ssl;
server_name repo.rtast.cn;
#ssl_certificate /etc/letsencrypt/live/rtast.cn/fullchain.pem;
#ssl_certificate_key /etc/letsencrypt/live/rtast.cn/privkey.pem;
ssl_certificate /root/ssl/repo.rtast.cn.chain.pem;
ssl_certificate_key /root/ssl/repo.rtast.cn.key;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
}
location /robots.txt {
alias /etc/gitlab/robots.txt;
}
}
将证书路径和后端端口配置成你设置的端口。
禁用多语言
这个功能虽然说没啥必要但是还是要提一下, 这个功能官方并没有直接提供,需要修改源代码才能实现。
首先备份i18n.rb
$ cd /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab
$ cp i18n.rb i18n.rb.bak
$ vim i18n.rb
然后找到 AVAILABLE_LANGUAGES 将你不需要的语言注释掉注意必须保留一个, 然后往下滑找到TRANSLATION_LEVELS也注释掉不需要的语言必须保留一个。
然后打开rails console, 使用以下命令
$ sudo gitlab-rails console
等待一分钟左右输入以下命令
Rails.application.reload_routes!
然后等待重载完毕,重载完成之后使用exit退出console
再次执行以下命令
$ sudo gitlab-rake cache:clear
$ sudo gitlab-ctl restart
然后打开你的Gitlab退出登录左下角就只剩下你保留的语言了
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:xiaoman1221@yhdzz.cn,工作室将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有。



改完i18n.rb清缓存那步不能少,我之前等了半天页面没反应,结果是忘了执行rake命令。
防火墙记得开3000端口,不然全白搭,新手最容易忽略这点。
能不能通过插件方式实现语言禁用啊?动源码总觉得不安全。
想问下改workhorse监听端口会影响webhook吗?担心改动后触发不了。
client_max_body_size调完之后上传大文件终于不报错了,爽!
证书放/root底下权限确实容易出问题,建议挪到/etc/nginx/ssl下更稳妥。
刚在Ubuntu 22.04上试了,除了路径有点不一样基本能照搬,还算兼容。
这配置真够折腾的,搞了整整一天才跑通…
证书权限问题确实坑,建议把nginx用户加到证书目录权限里。
禁用多语言这操作挺实用的,界面清爽不少。
proxy_set_header顺序确实重要,漏一个就各种问题。
外部nginx配起来确实比内置的稳定多了,就是步骤多了点。
生产环境用外部Nginx是靠谱些,就是调试阶段有点费劲。
改i18n.rb会不会影响后续升级啊?有点担心这个。
client_max_body_size设置很关键,之前传大包老失败,改了就好了。
这个配置在CentOS 7上试了没问题,版本兼容性应该还行。
hhh 配置完访问速度飞起,就是文档太散,楼主整理得算清楚了。
proxy_set_header那堆参数真的容易漏,我上次就因为少写X-Forwarded-Proto跳坑里了。
hhh 我也是文档翻半天才拼凑出完整流程,楼主这个总结省事多了。
刚照着配完,3000端口没开防火墙,连不上搞半天…新手别忘了这茬。
3000端口记得开防火墙,新手容易忽略这个。
感觉外部nginx配起来比内置的稳,就是步骤多了点,适合生产环境。
禁用多语言这操作有点野,下次升级岂不是白干?有没更持久的办法?
官方要是能出个语言包开关多好,每次升级还得重新改i18n.rb太麻烦了。
之前升级gitlab直接把i18n.rb覆盖了,语言又回去了,简直无语。
证书路径写对了但nginx起不来?查查/root/下权限,我就是被这个卡住的。
proxy_set_header Host $host 这句漏了的话,登录页会跳回localhost,血泪教训。
改完i18n.rb记得清缓存,不然刷新半天还是多语言,我傻等了十分钟。
楼主能不能出个一键脚本或者备份恢复步骤?手动操作怕出差错,想省心点。
脚本就算了,但求个备份还原checklist也行啊,改错一行得重装😭
又是改配置又要重启,折腾一下午才稳定,真是既满足又累。
折腾完确实累但值得,配置完流畅多了。
这配置里把 workhorse 改成 tcp 后,和外部 nginx 配合更灵活,实践证明性能也稳一些。
感觉官方把多语言弄成可选会更好,动源代码不太优雅,升级时会被覆盖吧?🤔
我之前也踩过证书路径坑,建议用绝对路径没错,但别忘了权限问题,证书被 nginx 读不到会502。
请问这个在 Ubuntu 22.04 上也能直接照着做吗?有啥版本依赖需要注意吗?
Ubuntu 22.04亲测能跑,不过得注意gitlab版本别太新,不然workhorse端口行为有点不一样。
Ubuntu 22.04亲测可用,版本没特别要求。
proxy_set_header 这几行别漏了,头信息没转好会各种奇怪问题,建议标注一下顺序。
client_max_body_size 这句真的重要,之前上传大文件秒报错,改了就稳了。
大文件上传终于不炸了,这行配置救我狗命!
刚改完i18n试了下,左下角语言果然少了,舒服多了。
配置写得挺详细,按步骤走通了,省了我不少时间。