nginx控制单个ip连接数及流量控制

为了防止服务器被恶意采集而导致服务器挂掉,所以应该采取一定手段来限制这些恶意的请求,我们可以使用Nginx控制单个IP连接数及流量控制。

这里主要使用nginx的ngx_http_limit_req_module和ngx_http_limit_conn_modeule两个模块来控制访问量,这两个模块是nginx的内置模块,所以只需要在nginx的配置文件中加上相应的配置即可。

1、找到nginx的配置文件并在http项里编辑

http {
     
    #配置区域名称为perip,需要写在http里面;限制请求
    #$binary_remote_addr是限制同一客户端ip地址;$server_name是限制同一server最大并发数;
    #limit_conn_zone定义每个IP的并发连接数量;limit_rate为限制下载速度;
    limit_conn_zone $binary_remote_addr zone=perip:100m;

}

2、在所要限制的server中加上如下配置

server {
    #这里调用http中的perip;
    limit_conn  perip 60;
    #限制每个连接的带宽,与连接数无关;  
    limit_rate 100k;  
    #对应limit_req_zone块,限制每IP的每秒的PHP页面请求次数为上面定义的rate的值:每秒5个请求,不延迟 
    limit_req zone=perip nodelay;
     
}