温馨提示×

debian gitlab怎么限制流量

小樊
45
2026-09-17 16:07:59
栏目: 智能运维

在 Debian 上部署的 GitLab,限制“流量”通常可以从网络层、GitLab 本身、反向代理、以及存储/API 层面来做。下面按常见场景给你一套可落地方案。


一、网络层限制(最通用)

1. 使用 iptables / nftables 限制带宽

适合:限制某个 IP、某个端口的总流量。

示例(iptables + tc 思路简化版)

# 限制 192.168.1.100 访问 GitLab(80/443) 带宽为 1M
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 80 -j DROP

iptables 本身不限制带宽,需要配合 tc

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

更推荐用 nftables + tc 或直接使用下面反向代理方案。


二、通过 Nginx(GitLab 自带)限制流量(推荐)

GitLab 默认使用 Nginx,可以直接改配置。

1. 限制单 IP 并发与请求速率

编辑:

/etc/gitlab/gitlab.rb

添加:

nginx['limit_req_zone'] = '
  $binary_remote_addr zone=gitlab_limit:10m rate=10r/s;
'

nginx['limit_req'] = '
  zone=gitlab_limit burst=20 nodelay;
'

然后:

gitlab-ctl reconfigure

✅ 效果:单 IP 每秒最多 10 个请求


2. 限制下载/上传带宽

GitLab 的 Nginx 支持:

nginx['client_max_body_size'] = "100m"

限速(需手动改 nginx 配置):

location / {
    limit_rate 500k;
}

路径:

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

⚠️ 改完需:

gitlab-ctl restart nginx

三、GitLab 内置限流(API / 登录)

GitLab 本身有速率限制:

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

还可限制:

  • 登录尝试
  • API 调用
  • 用户创建
gitlab_rails['rack_attack_git_basic_auth'] = {
  'enabled' => true,
  'ip_whitelist' => ["127.0.0.1"],
  'maxretry' => 10,
  'findtime' => 60,
  'bantime' => 3600
}
gitlab-ctl reconfigure

四、限制 Git 拉取 / 推送流量

1. 限制 Git 协议(SSH / HTTP)

  • SSH:系统层 iptables
  • HTTP:Nginx limit_rate

2. 禁止大仓库滥用

gitlab_rails['git_max_size'] = 524288000  # 500MB

五、反向代理层限制(如果你用前置 Nginx)

如果你在 GitLab 前还有 Nginx:

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

server {
    location / {
        limit_req zone=gitlab burst=10 nodelay;
        limit_rate 1m;
    }
}

六、总结推荐方案

需求 推荐方式
防刷 / 防攻击 GitLab Rack Attack
限制单 IP 请求 Nginx limit_req
限制下载速度 Nginx limit_rate
限制总带宽 tc / 前置防火墙
限制 Git 滥用 git_max_size + Nginx

如果你能说清楚:

  • 限制用户带宽 还是 防攻击
  • GitLab 是 Omnibus 还是 Docker
  • 是否有 前置 Nginx / 防火墙

我可以给你一份精确配置文件

0