在 Debian 上使用 nginx 限速,通常通过 ngx_http_limit_req_module(请求限速) 和 ngx_http_limit_conn_module(连接限速) 来实现。下面按常见场景说明。
sudo apt update
sudo apt install nginx
编辑 /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:共享内存 10MBrate=10r/s:每秒最多 10 个请求server {
listen 80;
server_name example.com;
location / {
limit_req zone=req_limit burst=20 nodelay;
proxy_pass http://backend;
}
}
参数说明:
burst=20:允许突发 20 个请求nodelay:突发请求立即处理(不加则排队)http {
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
}
server {
location /download/ {
limit_conn conn_limit 5;
}
}
含义:
nginx 原生不支持直接限速带宽,但可用第三方模块(nginx-extras 或 nginx-plus)。
sudo apt install nginx-extras
配置:
location /files/ {
limit_rate 100k;
limit_rate_after 1m;
}
说明:
limit_rate 100k:限速 100KB/slimit_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、网站、下载站、防爬),我可以给你更精确的配置。