Nginx如何实现限流(原理+图解+案例)

高并发场景

在高并发架构中,Nginx 是第一道“流量闸门”,流量最先到达。

Nginx如何实现限流(原理+图解+案例)-mikechen

性能最高(C 级,事件驱动),失败成本最低(丢请求优于压垮后端)。

核心目标只有一句话:把系统不可承受的流量,挡在应用层之前。

 

Nginx如何限流

限流的核心目的是:控制进入系统的请求速度,防止瞬时峰值流量冲垮后端。

Nginx 主要采用 :漏桶算法 (ngx_http_limit_req_module )。

漏桶算法:请求像水滴流入桶,桶以固定速率“漏出”,超过速率就被延迟或直接拒绝。

Nginx如何实现限流(原理+图解+案例)-mikechen

漏桶算法: 强制请求以固定的速率被处理。

如果请求过快,超出桶容量的请求会被直接丢弃或排队。

http {
    limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=10r/s;

    server {
        location /api/ {
            limit_req zone=ip_limit burst=20 nodelay;
        }
    }
}

limit_req_zone 定义桶(共享内存 + key + rate),limit_req 在具体 server/location 上应用规则。

rate=10r/s:基础出水速度为 10 QPS。

burst=20:允许瞬时多 20 个请求进入队列,超过则 503 或 429。

nodelay:超过基础速率的 burst 请求不排队,直接按限流结果处理。

mikechen睿哥

10年+一线大厂架构实战经验,操盘多个亿级大厂核心项目,就职于阿里、淘宝等一线大厂。

评论交流
    说说你的看法