标签:
1 1,判断refer,我们最常用的判断访问nginx中的referer的值,判断攻击者的referer特点来阻止攻击 2 set $flagjs_enable 0; # 0 - off , 1 - on 3 4 set $flagjs 0; 5 if ( $flagjs_enable = "1" ) 6 { 7 set $flagjs 1; 8 } 9 10 #上面是开关 11 12 if ($http_user_agent ~* "Baiduspider") { 13 set $flagjs "${flagjs}Y"; 14 } 15 16 if ($http_user_agent ~* "baidu") { 17 set $flagjs "${flagjs}Y"; 18 } 19 20 if ($flagjs = "1YY") { 21 22 #return 400; 23 24 add_header Set-Cookie "wdzjccjs=wdzjcc$remote_addr"; #这两句是js跳转 25 rewrite .* "$scheme://$host$uri" redirect; 26 27 } 28 29 2,判断攻击的ip特点,大多数攻击者都会通过代理来攻击,然有些代理是特点多个ip,我们正常 30 访问是单个ip(排除手机访问以外),这个只有在攻击的时候开启,很有效果 31 location / { 32 root /www/html; 33 #proxy 34 if ($http_x_forwarded_for ~ ‘^\d+.\d+.\d+.\d+\W\s\d+.\d+.\d+.\d+$‘){ #这个是匹配两个ip的 35 return 503; 36 } 37 index index.php index.html index.htm; 38 include .htaccess; 39 } 40 41 42 3,利用nginx limit_zone、limie_req_zone、limit_speed_zone(这个模块需要安装)来控制并发连接数、连接频率、带宽 43 下载nginx第三方模块nginx_limit_speed_module-master.zip 44 cd nginx编译目录 45 ./configure 之前编译参数 --add-module=模块目录 46 make 47 cp objs/nginx 到nginx安装目录sbin/nginx 48 49 http { 50 limit_conn_zone $binary_remote_addr zone=perip:10m; 51 limit_req_zone $binary_remote_addr zone=reqip:10m rate=10r/s; 52 limit_speed_zone speedip $binary_remote_addr 10m; 53 } 54 55 server { 56 limit_conn perip 20; 57 limit_rate 200k; 58 limit_speed speedip 200k; 59 limit_req zone=reqip burst=30; 60 }
标签:
原文地址:http://www.cnblogs.com/zenghui940/p/4235274.html