在 Linux 上部署的 GitLab(Omnibus 或源码版)中,“限流”通常指防止暴力破解、API 滥用、Web 请求过载等。下面按常见场景 + 配置方式说明。
编辑配置文件:
sudo vim /etc/gitlab/gitlab.rb
添加或修改:
gitlab_rails['rate_limit_requests_per_period'] = 10
gitlab_rails['rate_limit_period'] = 60
重新加载:
sudo gitlab-ctl reconfigure
✅ 效果:每 60 秒最多 10 次登录尝试
gitlab_rails['api_rate_limit'] = 300
表示:每个用户每分钟最多 300 次 API 请求
gitlab_rails['unauthenticated_api_rate_limit'] = 60
gitlab_rails['unauthenticated_requests_rate_limit'] = 60
GitLab 使用 rack-attack 防止恶意 IP。
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
如果你用 GitLab 自带的 Nginx:
nginx['rate_limiting'] = {
'enabled' => true,
'limit_req_zone' => 'zone=one:10m rate=10r/s',
'limit_req' => 'burst=20 nodelay'
}
或手动加 Nginx 配置:
limit_req_zone $binary_remote_addr zone=gitlab:10m rate=5r/s;
server {
limit_req zone=gitlab burst=10 nodelay;
}
GitLab 不直接限流 SSH,可通过:
fail2banpam / sshd 限制示例(fail2ban):
[gitlab-ssh]
enabled = true
filter = sshd
maxretry = 5
bantime = 3600
gitlab_ci['concurrent'] = 10
限制 Runner 并发任务数。
| 场景 | 方案 |
|---|---|
| 防暴力登录 | rack-attack |
| 防 API 刷爆 | api_rate_limit |
| 防 Web 层攻击 | Nginx limit_req |
| 防 SSH 爆破 | fail2ban |
| 控制资源 | CI concurrent |
sudo gitlab-ctl tail nginx
sudo gitlab-ctl tail gitlab-rails
如果你能说明:
我可以给你精确配置模板。