Debian系统下可通过Nginx的ngx_http_limit_req_module
和ngx_http_limit_conn_module
模块实现流量控制,具体方法如下:
请求速率限制(令牌桶算法)
使用limit_req_zone
定义限流区域(如按IP),通过rate
参数设置速率(如10r/s
),结合burst
参数允许突发请求,nodelay
参数可立即处理突发请求。
示例:
http {
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
server {
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
}
}
}
并发连接数限制
使用limit_conn_zone
定义共享内存区域,通过limit_conn
指令限制单个IP或服务器的并发连接数。
示例:
http {
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
server {
location /download/ {
limit_conn conn_limit 5;
}
}
}
白名单设置
通过geo
和map
模块定义白名单IP,使其不受限流规则影响。
示例:
geo $limit {
default 1;
192.168.1.0/24 0;
}
map $limit $limit_key {
0 "";
1 $binary_remote_addr;
}
limit_req_zone $limit_key zone=white_limit:10m rate=5r/s;
配置后需通过sudo nginx -s reload
重新加载配置生效。可根据实际需求调整参数,如rate
、burst
、zone
大小等。