温馨提示×

debian nginx怎样限速

小樊
51
2026-09-21 18:48:01
栏目: 智能运维

在 Debian 上使用 nginx 限速,通常通过 ngx_http_limit_req_module(请求限速) 和 ngx_http_limit_conn_module(连接限速) 来实现。下面按常见场景说明。


一、安装 nginx(Debian)

sudo apt update
sudo apt install nginx

二、按「请求频率」限速(limit_req)

1️⃣ 配置限流区域(http 段)

编辑 /etc/nginx/nginx.conf,在 http {} 内添加:

http {
    limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
}

含义:

  • $binary_remote_addr:按客户端 IP 限速
  • zone=req_limit:10m:共享内存 10MB
  • rate=10r/s:每秒最多 10 个请求

2️⃣ 在 server / location 中使用

server {
    listen 80;
    server_name example.com;

    location / {
        limit_req zone=req_limit burst=20 nodelay;
        proxy_pass http://backend;
    }
}

参数说明:

  • burst=20:允许突发 20 个请求
  • nodelay:突发请求立即处理(不加则排队)

三、按「连接数」限速(limit_conn)

1️⃣ 定义连接限制区

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
}

2️⃣ 限制单 IP 连接数

server {
    location /download/ {
        limit_conn conn_limit 5;
    }
}

含义:

  • 每个 IP 最多 5 个并发连接

四、限制「下载速度」(带宽限速)

nginx 原生不支持直接限速带宽,但可用第三方模块(nginx-extras 或 nginx-plus)。

Debian 可用方案(第三方)

sudo apt install nginx-extras

配置:

location /files/ {
    limit_rate 100k;
    limit_rate_after 1m;
}

说明:

  • limit_rate 100k:限速 100KB/s
  • limit_rate_after 1m:前 1MB 不限速

五、完整示例

http {
    limit_req_zone $binary_remote_addr zone=api_limit:10m rate=5r/s;
    limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

    server {
        listen 80;
        server_name example.com;

        location /api/ {
            limit_req zone=api_limit burst=10 nodelay;
            limit_conn conn_limit 3;
            proxy_pass http://127.0.0.1:8080;
        }

        location /download/ {
            limit_rate 200k;
        }
    }
}

六、测试 & 重载

sudo nginx -t
sudo systemctl reload nginx

七、常见用途建议

场景 推荐方式
API 防刷 limit_req
防 CC 攻击 limit_req + limit_conn
文件下载 limit_rate
视频/大文件 limit_rate_after

如果你有 具体场景(如 API、网站、下载站、防爬),我可以给你更精确的配置。

0 踩