http {
#geot和map两段用于处理限速白名单,map段映射名单到whiteiplist {
default 1;
127.0.0.1 0;
121.199.16.249 0;
}
map 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;
#只对PHP页面的请求进行限速
location ~ [^/]\.php(/|$)
{
#对应limit_conn_zone块
#限制每IP的PHP页面请求并发数量为5个
limit_conn perip 5;
#对应limit_req_zone块
#限制每IP的每秒的PHP页面请求次数为上面定义的rate的值:每秒5个请求,不延迟
limit_req zone=reqps nodelay;
}
}
}