Nginx的请求限制, 如何设定限流和并发

发布于 2023-03-28 17:18:13

1. 首先在http内定义限制链接和限制请求的总配置

http
    {
    ...
    #定义连接数的限制:需要配合limit_conn才生效
    #针对单个IP生效(binary_remote_addr), 开辟一个perip的10M缓存空间
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    #针对服务器名称(server_name), 开辟一个perserver的10M缓存空间
    limit_conn_zone $server_name zone=perserver:10m;
    #定义请求地址的限制:需要配合limit_req才生效    
    # 1、根据IP地址限流
# 1) remote_addr,表示通过IP地址进行限流
# 2)iplimit,指定一块内存区域大小为20M,名字为iplimit,用于记录访问的频率信息
# 3)rate=1r/s,表示每秒放行一个请求,可以根据业务需求指定,标识访问的限流频率
    limit_req_zone $binary_remote_addr zone=iplimit:10m rate=5r/s;
# 2、服务器级别限流,即对同一个服务器发来的请求,对此服务器进行限流
    limit_req_zone $server_name zone=server_limit:5m rate=10r/s;
    server {
     ...
     location / {
  #表示该location段使用limit_conn_zone定义的zone,对单个IP(5个)或者服务器(10个)限制同时连接数
  limit_conn perip 5;          
  limit_rate_after 5000k; #配置传输的前5000kbyte数据不限速
  limit_rate 50k; #限速为每一个连接 100KB/秒
  limit_conn perserver 10;
  #请求限制 : 对于符合名为req_zone的iplimit配置(对于同一ip的请求,限制平均速率为1个请求/秒) , 超过部分进行延迟处理,若超过5个请求/秒,丢弃超过部分。
  limit_req zone=iplimit burst=5 nodelay;
  limit_req zone=server_limit burst=10 nodelay;
  
        }
   }
    }
0 条评论

发布
问题