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重新加載配置生效??筛鶕嶋H需求調整參數,如rate、burst、zone大小等。