nginx限制ip访问次数

lit_req_zone的功能是通过 令牌桶原理来限制 用户的连接频率,(这个模块允许你去限制单个地址 指定会话或特殊需要的请求数 )

http { 
        limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; 
        #触发条件,限制每个地址每秒只能请求10次 
        server { 
                ... 
                location  ~ \.php$ { 
                        limit_req zone=one burst=150 nodelay; 
                        #执行的动作,通过zone名字对应 
                 } 
        }
} 

参数说明:
1)$binary_remote_addr二进制远程地址
2)zone=one:10m :zone名字叫one,并为这个zone分配10M内存,用来存储会话(二进制远程地址)1m内存可以保存16000会话
3)rate=10r/s; 限制频率为每秒10个请求
4)burst=150 这相当于在检查站req旁边放150个座位。如果某个请求地址当时超过速度限制被拦了,请他在空座位上坐着,等排队,如果检查站空了,就可以通过。如果连座位都坐满了,那就抱歉了,请求直接退回,客户端得到一个服务器忙的响应,每秒增加10个令牌(漏桶原理)
5)nodelay 超过的请求不被延迟处理,设置后15个请求在1秒内处理

你可能感兴趣的:(linux,nginx)