温馨提示×

debian gitlab如何限速

小樊
44
2026-10-08 09:54:38
栏目: 智能运维

在 Debian 上运行的 GitLab 限速(rate limiting)通常可以从 GitLab 自身配置、Nginx(或 Omnibus 内置 Nginx)、以及 系统/网络层 三个层面来做。下面按常见场景给你说明。


一、GitLab 自身限速(推荐先从这里入手)

GitLab(Omnibus 安装)内置了多种限速机制。

1. 修改 GitLab 配置文件

编辑:

sudo nano /etc/gitlab/gitlab.rb

2. 常见限速配置示例

(1)Web / API 请求限速(Rack Attack)

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

(2)Git 操作限速(SSH / HTTP)

gitlab_rails['rate_limit_requests_per_period'] = 10
gitlab_rails['rate_limit_period'] = 60

(3)API 限速

gitlab_rails['api_rate_limit'] = 300  # 每用户每分钟

(4)用户登录失败限制

gitlab_rails['password_authentication_enabled'] = true

3. 重新加载配置

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

二、通过 Nginx 限速(GitLab 推荐方式之一)

如果你用的是 Omnibus GitLab(自带 Nginx):

1. 编辑 Nginx 配置

sudo nano /etc/gitlab/gitlab.rb

2. 添加 Nginx 限速

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

或手动在:

/var/opt/gitlab/nginx/conf/gitlab-http.conf

中加入:

limit_req_zone $binary_remote_addr zone=gitlab:10m rate=5r/s;

server {
    limit_req zone=gitlab burst=10 nodelay;
}

然后:

sudo gitlab-ctl restart nginx

三、SSH Git 限速(较难,一般不限)

SSH 走的是系统 sshd,GitLab 本身不限制 SSH 速率。

如确实需要:

  • 使用 fail2ban
  • 限制并发连接数(iptables / nftables)

示例(iptables):

iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 5 -j DROP

四、网络层限速(服务器整体)

如果你希望限制 GitLab 服务器的带宽:

使用 tc(流量控制)

tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms

五、推荐方案总结

场景 推荐方式
防止暴力破解 GitLab Rack Attack
API 滥用 GitLab API 限速
Web 访问洪水 Nginx limit_req
带宽占用 tc / 防火墙

如果你愿意,可以告诉我:

  • GitLab 安装方式(Omnibus / Docker / 源码)
  • 想限制的是 Web / API / Git / SSH / 带宽
  • 当前服务器规模(用户量)

我可以给你一份可直接用的配置。

0 踩