在 Debian 上使用 Nginx 限流,通常是通过 ngx_http_limit_req_module(请求频率限制)和 ngx_http_limit_conn_module(并发连接限制)来实现的。下面按常见场景给你说明。
一般编辑:
sudo nano /etc/nginx/nginx.conf
或站点配置:
sudo nano /etc/nginx/sites-available/default
http {
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
}
说明:
$binary_remote_addr:按客户端 IP 限流zone=req_limit:10m:共享内存区名称和大小rate=10r/s:每秒最多 10 个请求server {
location / {
limit_req zone=req_limit burst=20 nodelay;
}
}
参数说明:
burst=20:允许突发 20 个请求nodelay:突发请求不延迟处理sudo nginx -t
sudo systemctl reload nginx
http {
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
}
server {
location / {
limit_conn conn_limit 5;
}
}
含义:
单个 IP 最多 5 个并发连接
location /api/ {
limit_req zone=req_limit burst=5;
}
geo $limit {
default 1;
127.0.0.1 0;
10.0.0.0/8 0;
}
map $limit $limit_key {
0 "";
1 $binary_remote_addr;
}
limit_req_zone $limit_key zone=req_limit:10m rate=5r/s;
默认返回 503,可自定义:
limit_req_status 429;
tail -f /var/log/nginx/access.log
限流时会看到 503 或 429
rate=5r/s burst=10rate=10r/s burst=20如果你有 具体场景(如 WordPress、API、CC 攻击防护),我可以给你一份可直接用的配置。