温馨提示×

ubuntu gitlab网络配置与优化

小樊
44
2026-01-03 10:09:01
栏目: 智能运维

Ubuntu 上 GitLab 的网络配置与优化

一 基础网络与访问配置

  • 设置外部访问地址:编辑 /etc/gitlab/gitlab.rb,将 external_url 设为域名或 IP(HTTP/HTTPS)。修改后执行 sudo gitlab-ctl reconfigure 使配置生效。示例:external_url ‘http://your_server_ip’ 或 ‘https://gitlab.example.com’。
  • 防火墙放行:开放 80/443(以及自定义的 SSH 端口)。如使用 UFW:sudo ufw allow 80,443/tcp;如使用 firewalld:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload。
  • NAT/端口转发:如有路由器或云厂商安全组,将公网 80/443 转发至内网 GitLab 主机;如 SSH 端口非 22,需同步转发并在 GitLab 中声明 SSH 端口。
  • 验证:浏览器访问 external_url,或在服务器上执行 curl -I http://127.0.0.1 检查返回状态。

二 容器与端口映射实践(Omnibus 与 Docker 两种场景)

  • Omnibus(裸机/包安装)
    • 修改 external_url 与所需端口(如改为 8080),必要时调整 nginx 监听端口。
    • 重新配置并重启:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart。
  • Docker Compose(示例)
    • 编排要点:将 external_url 的端口与宿主机端口映射一致;如自定义 SSH 端口,需同时映射并声明。
    • 示例片段:
      • environment: GITLAB_OMNIBUS_CONFIG: | external_url ‘http://192.168.X.X:8929’ gitlab_rails[‘gitlab_shell_ssh_port’] = 2222
      • ports: “8929:8929” “2222:22”
    • 说明:SSH 克隆地址将显示为 ssh://git@your_domain_or_ip:2222/namespace/project.git。

三 域名与 HTTPS 配置

  • 自签名或已有证书
    • gitlab.rb 中启用并指向证书/私钥:
      • nginx[‘enable’] = true
      • nginx[‘redirect_http_to_https’] = true
      • nginx[‘ssl_certificate’] = “/etc/gitlab/ssl/server_cert.crt”
      • nginx[‘ssl_certificate_key’] = “/etc/gitlab/ssl/private.key”
    • 执行 sudo gitlab-ctl reconfigure 生效。
  • Let’s Encrypt 自动证书
    • 开启自动签发与续期:
      • letsencrypt[‘enable’] = true
      • letsencrypt[‘contact_emails’] = [‘admin@example.com’]
      • letsencrypt[‘auto_renew’] = true
      • letsencrypt[‘auto_renew_hour’] = “1”
      • letsencrypt[‘auto_renew_minute’] = “30”
      • letsencrypt[‘auto_renew_day_of_month’] = “*/5”
      • external_url ‘https://gitlab.example.com’
    • 确保 80/443 对外开放,以便完成 ACME 验证。

四 传输与并发性能优化

  • 大文件与流水线
    • 使用 Git LFS 管理大文件,避免仓库膨胀与克隆慢;CI 构建产物与缓存建议使用对象存储(如 S3/MinIO)或外部缓存,减轻内网与磁盘压力。
  • 页面与后台并发
    • 适度调整 Puma(前端)与 Sidekiq(后台任务)并发,避免资源争用:
      • puma[‘worker_processes’]、puma[‘min_threads’]、puma[‘max_threads’]
      • sidekiq[‘concurrency’]
    • 示例(小团队/低配环境,仅示意):puma[‘worker_processes’] = 1;puma[‘min_threads’] = 1;puma[‘max_threads’] = 2;sidekiq[‘concurrency’] = 4。调整后执行 sudo gitlab-ctl reconfigure。
  • 监控组件按需启用
    • 资源紧张时可临时关闭监控相关组件(如 Prometheus/Alertmanager/Exporters),以降低内存与 CPU 占用:monitoring_role[‘enable’] = false;prometheus[‘enable’] = false;alertmanager[‘enable’] = false;postgres_exporter[‘enable’] = false;redis_exporter[‘enable’] = false;node_exporter[‘enable’] = false。生产环境不建议长期关闭核心监控。
  • 传输与超时
    • 提高 Git 与 Nginx 读写与超时阈值(示例):
      • nginx[‘client_max_body_size’] = ‘512m’(适配大推送/附件)
      • 在 gitlab.rb 或反向代理中适当增大 proxy_read_timeout / proxy_connect_timeout(如 300s),减少大包/慢链路中断。
  • 可选加速
    • 面向公网用户可启用 CDN 加速静态资源访问;内网环境优先优化链路与存储 I/O。

五 安全与网络加固要点

  • 强制 HTTPS 并配置安全协议与套件(示例):
    • nginx[‘ssl_protocols’] = “TLSv1.2 TLSv1.3”
    • nginx[‘ssl_prefer_server_ciphers’] = “on”
    • nginx[‘ssl_ciphers’] = “ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:…”
    • nginx[‘ssl_session_cache’] = “builtin:SSL_SESSION_CACHE(Filesystem,10m)”
  • 限制管理接口与内网访问:仅在内网开放管理后台与备份/监控端口;对外最小化暴露。
  • 邮件通知(可选但推荐):配置 SMTP/TLS,保证账号注册、工单与流水线通知可达。
  • 变更流程:修改 gitlab.rb 前先备份;每次变更后执行 sudo gitlab-ctl reconfigure 并检查服务状态(sudo gitlab-ctl status)。

0