Nginx 配置限流:基于漏桶算法的流量控制策略
在高并发场景中,突发流量可能导致服务器过载、响应延迟甚至崩溃。Nginx 提供了基于漏桶算法的限流功能,通过limit_req_zone和limit_req指令控制请求速率,保护后端服务稳定。本文详细讲解 Nginx 限流的配置方法、核心参数及实战场景,帮助合理管控流量。
限流核心原理:漏桶算法
Nginx 限流基于漏桶算法(Leaky Bucket),其核心逻辑如下:
- 想象一个 “漏桶”,请求如同水流注入桶中,桶底有一个固定速率的 “漏洞”;
- 若请求注入速度超过漏洞的漏水速度,多余的水(请求)会溢出(被拒绝);
- 通过控制漏洞的速率(
rate)和桶的容量(burst),实现请求的匀速处理,避免瞬间压力。
基础配置:limit_req_zone与limit_req
Nginx 限流需两步配置:先在http块定义限流规则(limit_req_zone),再在location/server块应用规则(limit_req)。
定义限流区域(limit_req_zone)
1 | http { |