在 CentOS 上部署的 GitLab 进行“限速”,需要看你想限制哪一层,常见有下面几种场景。下面按使用频率从高到低说明。
GitLab 本身就支持对 Web 页面、API、Git 操作 做限速。
编辑配置文件:
sudo vim /etc/gitlab/gitlab.rb
# 限制 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
}
sudo gitlab-ctl reconfigure
✅ 适合:防止刷接口、暴力破解、爬仓库
GitLab 本身不支持直接限速 Git 流量,通常靠下面方式:
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 频率
yum install -y wondershaper
wondershaper eth0 1000 1000
(单位 Kbps)
✅ 适合:整台服务器限速(不推荐生产随便用)
GitLab 企业版(EE)支持:
社区版(CE)只能靠:
SSH 不走 Nginx,GitLab 无法直接限速 SSH。
可选方案:
sshd_config 限制连接数firewalld / iptables 限速✅ 最佳实践:
如果你能告诉我:
我可以给你更精确的配置示例。