温馨提示×

linux gitlab怎么限制流量

小樊
35
2026-09-19 19:14:55
栏目: 智能运维

在 Linux 上运行 GitLab 时,“限制流量”通常指以下几个层面之一,你可以按需选择:


一、限制 GitLab 对外访问带宽(最常用)

方案 1:使用 Nginx 限速(推荐)

GitLab 自带 Nginx,可直接配置。

编辑 GitLab 配置:

sudo vim /etc/gitlab/gitlab.rb

添加或修改:

nginx['enable'] = true

# 限制单 IP 下载速度(示例:1MB/s)
nginx['custom_gitlab_server_config'] = "
  limit_rate 1m;
"

# 或使用 limit_req 限制请求频率
nginx['custom_gitlab_server_config'] = "
  limit_req_zone $binary_remote_addr zone=gitlab_limit:10m rate=10r/s;
  server {
    limit_req zone=gitlab_limit burst=20 nodelay;
  }
"

应用配置:

sudo gitlab-ctl reconfigure

方案 2:系统层使用 tc(Linux 流量控制)

适合限制整个服务器网卡流量。

示例:限制 eth0 为 10Mbps

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

查看:

tc qdisc show

删除:

sudo tc qdisc del dev eth0 root

二、限制 GitLab 克隆 / 拉取速度(Git 层)

方法:Git 配置限速

git config --global http.postBuffer 524288000

或使用 proxy + 限速(如 nginxsquid)。


三、限制 GitLab 用户并发与资源(防滥用)

1. 限制 Sidekiq / Puma 资源

puma['worker_processes'] = 2
sidekiq['concurrency'] = 10
sudo gitlab-ctl reconfigure

2. 限制 API 访问频率

gitlab_rails['rate_limiting'] = {
  enabled: true,
  threshold: 100,
  interval: 1.minute
}

四、防火墙层限制(IP / 端口)

使用 iptables 限速

iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute -j ACCEPT

五、Docker 方式运行 GitLab(额外说明)

如果是 Docker:

docker run --memory=2g --cpu-quota=50000 gitlab/gitlab-ce

推荐组合方案

最佳实践

  • Nginx limit_rate 控制下载速度
  • limit_req 防止刷接口
  • tc 控制整机带宽(可选)

如果你能补充:

  • GitLab 是 Omnibus / Docker / 源码
  • 想限制 上传 / 下载 / API / 克隆
  • 是否针对 特定用户或 IP

我可以给你更精确的配置示例。

0