温馨提示×

centos gitlab怎么限速

小樊
36
2026-09-24 03:50:11
栏目: 智能运维

CentOS 上部署的 GitLab 进行“限速”,需要看你想限制哪一层,常见有下面几种场景。下面按使用频率从高到低说明。


一、限制 GitLab 自带的 Web/API 限速(最常用)

GitLab 本身就支持对 Web 页面、API、Git 操作 做限速。

1️⃣ 修改 GitLab 配置

编辑配置文件:

sudo vim /etc/gitlab/gitlab.rb

2️⃣ 常见限速参数示例

# 限制 Git HTTP/SSH 操作
gitlab_rails['rate_limit_requests_per_period'] = 100
gitlab_rails['rate_limit_period'] = 60

# 限制 API 请求
gitlab_rails['api_rate_limit'] = 300

# 限制 Web 页面(防止暴力破解)
gitlab_rails['rack_attack_git_basic_auth'] = {
  'enabled' => true,
  'ip_whitelist' => [],
  'maxretry' => 10,
  'findtime' => 60,
  'bantime' => 3600
}

3️⃣ 重新加载配置

sudo gitlab-ctl reconfigure

✅ 适合:防止刷接口、暴力破解、爬仓库


二、限制 Git 仓库下载/上传速度(带宽限速)

GitLab 本身不支持直接限速 Git 流量,通常靠下面方式:

方案 A:用 Nginx 限速(推荐)

GitLab 自带 Nginx,可直接改配置。

编辑:

sudo vim /etc/gitlab/gitlab.rb

添加:

nginx['enable'] = true

nginx['custom_gitlab_server_config'] = <<-EOS
  limit_req_zone $binary_remote_addr zone=gitlimit:10m rate=1r/s;

  location ~ ^/[\w\.-]+/[\w\.-]+\.git/ {
    limit_req zone=gitlimit burst=5 nodelay;
  }
EOS

重新配置:

sudo gitlab-ctl reconfigure

✅ 适合:限制 clone / push 频率


方案 B:系统级带宽限速(tc / wondershaper)

yum install -y wondershaper
wondershaper eth0 1000 1000

(单位 Kbps)

✅ 适合:整台服务器限速(不推荐生产随便用)


三、限制单个用户 / 项目 的并发

GitLab 企业版(EE)支持:

  • 用户并发限制
  • 项目 API 限制

社区版(CE)只能靠:

  • Rack Attack
  • Nginx
  • 外部网关

四、SSH Git 限速(较难)

SSH 不走 Nginx,GitLab 无法直接限速 SSH

可选方案:

  • sshd_config 限制连接数
  • 使用 firewalld / iptables 限速

五、推荐组合(生产常用)

✅ 最佳实践:

  • GitLab 内置 rate limit(防刷)
  • Nginx 限制 Git 请求频率
  • 必要时配合防火墙

如果你能告诉我:

  • ✅ GitLab 版本(CE / EE)
  • ✅ 想限制 clone 速度 / 请求频率 / 用户数
  • ✅ 是否用 Docker

我可以给你更精确的配置示例

0