应对高并发nginx限流

为了防止大流量恶意搞死项目,从nginx下手进行限流

http {
     #geot和map两段用于处理限速白名单,map段映射名单到$limit,处于geo内的IP将被映射为空值,否则为其IP地址。
     #limit_conn_zone和limit_req_zone指令对于键为空值的将会被忽略,从而实现对于列出来的IP不做限制
     geo $whiteiplist  {
        default 1;
        127.0.0.1 0;
        192.168.0.1 0;
     }
     map $whiteiplist  $limit {
        1 $binary_remote_addr;
        0 "";
     }
     
     #limit_conn_zone定义每个IP的并发连接数量
     #设置一个缓存区保存不同key的状态,大小10m。使用$limit来作为key,以此限制每个源IP的链接数
     limit_conn_zone $limit  zone=perip:10m;
     
     
     #limit_req_zone定义每个IP的每秒请求数量
     #设置一个缓存区reqps保存不同key的状态,大小10m。这里的状态是指当前的过量请求数。
     #$limit为空值则不限速,否则对应的IP进行限制每秒5个连接请求。
     limit_req_zone  $limit  zone=reqps:10m rate=5r/s;

      
 
     server {
        listen     80;
        server_name   www.domain.com;
        location ~ [^/]\.php(/|$)
        {
            #对应limit_conn_zone块
            #限制每IP的PHP页面请求并发数量为10个
            limit_conn perip 10; 
           
            #对应limit_req_zone块
            #限制每IP的每秒的PHP页面请求次数为上面定义的rate的值:每秒10个请求,不延迟      
            limit_req zone=reqps nodelay;
        }
     }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值