温馨提示×

centos gitlab怎么限流

小樊
45
2026-10-02 22:36:15
栏目: 智能运维

在 CentOS 上部署的 GitLab(通常是 Omnibus 包安装),“限流”可以从多个层面来做。下面按常见场景给你说明。


一、GitLab 自带限流(最推荐)

GitLab(尤其是 12+ 版本)自带多种限流功能,主要配置在 gitlab.rb 中。

1. 用户/IP 限流(Throttling)

编辑配置文件:

sudo vi /etc/gitlab/gitlab.rb

示例(限制 1 分钟内最多 10 次失败登录):

gitlab_rails['rack_attack_git_basic_auth'] = {
  'enabled' => true,
  'ip_whitelist' => ["127.0.0.1"],
  'maxretry' => 10,
  'findtime' => 60,
  'bantime' => 3600
}

应用配置:

sudo gitlab-ctl reconfigure

2. API 限流(GitLab 14+)

gitlab_rails['rate_limiting'] = {
  'enabled' => true,
  'rate' => 10,        # 每秒请求数
  'burst' => 20        # 突发请求数
}

二、限制 Git / SSH 拉取频率

1. 限制 Git HTTP 访问(Rack Attack)

gitlab_rails['rack_attack'] = {
  'enabled' => true,
  'ip_whitelist' => ["127.0.0.1"],
  'throttle_unauthenticated_git_http' => {
    'enabled' => true,
    'limit' => 100,
    'period' => 60
  }
}

2. 限制 SSH(系统层)

GitLab 的 SSH 走系统 sshd,可修改:

sudo vi /etc/ssh/sshd_config

例如限制单 IP 连接:

MaxSessions 5
MaxStartups 10:30:60

重启:

sudo systemctl restart sshd

三、Nginx 层限流(GitLab 自带 Nginx)

GitLab 使用内置 Nginx,可直接加限流规则。

1. 限流配置

nginx['enable'] = true
nginx['rate_limiting'] = {
  'enabled' => true,
  'limit_req_zone' => '$binary_remote_addr zone=one:10m rate=5r/s',
  'limit_req' => 'zone=one burst=10 nodelay'
}

应用:

sudo gitlab-ctl reconfigure

四、防火墙层限流(CentOS)

使用 firewalld + rich rule

firewall-cmd --permanent --add-rich-rule='rule service name="http" limit value="10/m" accept'
firewall-cmd --reload

五、容器/外部反向代理限流(可选)

如果你在 GitLab 前加了 Nginx / HAProxy / Kubernetes Ingress,限流应在那一层做,效率更高。


六、常见推荐组合

✅ GitLab 自带 throttle(防爆破)
✅ Nginx limit_req(防刷接口)
✅ 防火墙限制异常 IP


如果你能补充说明:

  • GitLab 版本
  • Omnibus 还是 Docker
  • 想限 登录 / API / Git clone / 整体带宽

我可以给你一套精确配置示例。

0 踩