nginx做防ddos拦截的方法:
在nginx.conf中新增配置,限制每秒的请求数,可通过ngx_http_limit_req_module模块的漏桶原理来限制单位时间内请求数,一旦单位时间内请求数超过限制就会返回503错误,添加配置如下:
http { limit_req_zone $binary_remote_addr zone=one:10m rate=100r/s; //触发条件,所有访问ip 限制每秒100个请求
...
server {
...
location ~ \.php$ {
limit_req zone=one burst=5 nodelay; //执行的动作,通过zone名字对应
}
}
}
如果是限制单个IP的连接数,配置如下:
http { limit_conn_zone $binary_remote_addr zone=addr:10m; //触发条件
...
server {
...
location /download/ {
limit_conn addr 2; // 限制同一时间内2个连接,超出的连接返回503
}
}
}