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大小等。