Nginx限流

Nginx官方版本限制IP的连接和并发分别有两个模块:

  1. limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 “leaky bucket”
  2. limit_req_conn 用来限制同一时间连接数,即并发限制

其中limit_req_conn模块可以根据源IP限制单用户并发访问的连接数或连接到该服务的总并发连接数

http{
    #定义IP的session大小 
    limit_zone one $binary_remote_addr 20m;
    
    #定义每秒允许发起的请求数
    limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s;
    limit_req_zone $binary_remote_addr $uri zone=two:3m rate=1r/s;               # $uri:不带客户端请求参数
    limit_req_zone $binary_remote_addr $request_uri zone=thre:3m rate=1r/s;      # $request_uri:带客户端请求
    
    #定义每个IP能够发起的并发连接数
    limit_conn one 10;
    
    #缓存还没来得及处理的缓存
    limit_req zone=req_one burst=100;
    #超过这个值,新的请求会被拒绝
    
    。。。。

}