配置nginx来过滤http flood

ked*_*off 8 ddos nginx

A在我的服务器上有一个http洪水,而不是那么多查询,但无论如何.日志中的查询

95.55.237.3 - - [06/Sep/2012:14:38:23 +0400]"GET/HTTP/1.0"200 35551" - ""Mozilla/5.0(Windows; U; Windows NT 6.1; en-US)" " - "| " - "93.78.44.25 - - [06/Sep/2012:14:38:23 +0400]"GET/HTTP/1.0"200 36051" - ""Mozilla/5.0(Windows; U; Windows NT 6.1; en-美国)"" - "| " - "46.118.112.3 - - [06/Sep/2012:14:38:23 +0400]"GET/HTTP/1.0"200 35551" - ""Mozilla/5.0(Windows; U; Windows NT 6.1; en-美国)"" - "| " - "

我在nginx配置中尝试了这个过滤器

server {
    .....
    set $add 1;
    set $ban '';

###### Rule 1 ########
if ($http_referer = '-' ) {
    set $ban $ban$add;
}
if ($request_uri = '/') {
    set $ban $ban$add;
}

if ($http_user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)') {
    set $ban $ban$add;
}

if ($ban = 111) {
    return 444;
}
######################
......
}
Run Code Online (Sandbox Code Playgroud)

但是stil bot查询得到200 OK.有人可以帮忙吗?

cob*_*aco 34

尝试在配置中添加类似以下指令的内容以防止http泛滥:

http {
  limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
  limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;

  server {
    limit_conn conn_limit_per_ip 10;
    limit_req zone=req_limit_per_ip burst=10 nodelay;
  }
} 
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参见http://nginx.org/en/docs/http/ngx_http_limit_conn_module.htmlhttp://nginx.org/en/docs/http/ngx_http_limit_req_module.html

以下是所有指令http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate

注意:http://www.botsvsbrowsers.com/details/504401/index.html说上面的用户代理不是已知的机器人

  • @brauliobo认真地说,如果不是多人游戏,现在有多少人从同一个局域网浏览.您甚至可以在您设置的时间内调整允许的ips数量... (3认同)