设置Nginx参数调整同IP访问页面的频率次数

有网友反馈到自己的网站被外部刷的太多导致打开缓慢,这里应该是同IP的软件或者人为刷新导致的。这里我们可以通过Nginx限制同IP的访问次数限制。

第一步:限制同一IP地址访问网站的次数

需要在Nginx中进行配置HttpLimit模块,HttpLimit以针对条件,进行会话的并发连接数控制。(例如:限制每个IP的并发连接数。)

上面有两种模块配置的使用方法,可根据不同情况设置。

http{

limit_zone one $binary_remote_addr 10m;
limit_req_zone $binary_remote_addr zone=req_one:10m rate=10r/s;
server{

limit_conn one 1;
limit_req zone=req_one burst=1;
}
}

方法1:

limit_zone one $binary_remote_addr 10m;

这里的 one 是声明一个 limit_zone 的名字,$binary_remote_addr是替代 $remore_addr 的变量,10m 是会话状态储存的空间
limit_conn one 1 ,限制客户端并发连接数量为1

方法2:

limit_req_zone $binary_remote_addr zone=req_one:10m rate=10r/s;

rate=10r/m 的意思是每个地址每分钟只能请求10次,也就是说根据令牌桶原理burst=1 一共有1块令牌,并且每分钟只新增10块令牌,
1块令牌发完后多出来的那些请求就会返回503

加上 nodelay 之后超过 burst大小的请求就会直接返回503

如果没有这个字段会造成大量的tcp连接请求等待。

limit_zone两种工作情况

limit_req zone=one burst=10 ;

默认情况下是这样配置的,这样每个请求就会有一个delay时间0

limit_req_zone $binary_remote_addr zone=one:100m rate=10r/m;

就是每分钟有10个令牌供用户使用,每个请求时间就是60/10,那每个请求时间就是6s。

limit_req zone=one burst=10 nodelay;

添加 nodelay 配置,这样就是根据你的网络状况访问,一分钟访问够10次后,服务器直接返回503。

imit_req_zone $binary_remote_addr zone=one:100m rate=10r/m;

就是每分钟有10个令牌供用户使用,会根据网络情况访问url,如果一分钟超过10个令牌,服务器返回503,等待下一个一分钟领取访问令牌。

配置完HttpLimit模块后,重新启动nginx。

最后,我们如果有必要的话也可以安装WordPress防火墙的插件。

投上你的一票

本文出处:老蒋部落 » 设置Nginx参数调整同IP访问页面的频率次数 | 欢迎分享( 公众号:老蒋朋友圈 )

公众号 「老蒋朋友圈」获取站长新知 / 加QQ群 【1012423279】获取商家优惠推送