高并发场景下,Nginx如何做限流?

Nginx是大型架构核心,下面我详解Nginx限流@mikechen

高并发场景

在高并发系统中,Nginx不仅仅是负载均衡器,更是系统的第一道防线。

高并发场景下,Nginx如何做限流?-mikechen

Nginx 作为整个系统的“看门神”(流量接入层),限流是它最核心的功能之一。

Nginx 的限流核心思想是:“宁可拒绝一部分请求,也要保护后端服务(如 Tomcat/MySQL)不被冲垮。

 

限流

Nginx 最常见的限流方式是基于 limit_req 和 limit_conn 模块。

 

高并发场景下,Nginx如何做限流?-mikechen

limit_req 用于限制请求速率,适合防止接口被短时间内大量打爆。

http {

    limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;

    server {

        location /api/ {

            limit_req zone=req_limit burst=20 nodelay;

        }

    }

}

rate,rate=10r/s

表示:

每秒最多10个请求。

limit_conn 用于限制并发连接数,适合控制单个客户端或某类流量占用过多连接资源。

高并发场景下,Nginx如何做限流?-mikechen

http {

    limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

    server {

        location / {

            limit_conn conn_limit 20;

        }

    }

}

单IP最多20个连接

超过:

503 Service Unavailable。

限流的核心在于:把不可控流量变为可预测流量。

这样既能保证系统平稳处理请求,又能在高峰期避免后端线程池、数据库连接池被瞬间耗尽。

评论交流
    说说你的看法