1
1
,判断refer,我们最常用的判断访问nginx中的referer的值,判断攻击者的referer特点来阻止攻击
2
set $flagjs_enable 0; # 0 - off , 1 - on
3 4set $flagjs 0;
5if ( $flagjs_enable = "1" )
6{
7set $flagjs 1;
8}
910#上面是开关
1112if ($http_user_agent ~* "Baiduspider") {
13set $flagjs "${flagjs}Y";
14}
1516if ($http_user_agent ~* "baidu") {
17set $flagjs "${flagjs}Y";
18}
1920if ($flagjs = "1YY") {
2122 #return400;
2324 add_header Set-Cookie "wdzjccjs=wdzjcc$remote_addr"; #这两句是js跳转
25 rewrite .* "$scheme://$host$uri" redirect;
2627}
28292,判断攻击的ip特点,大多数攻击者都会通过代理来攻击,然有些代理是特点多个ip,我们正常
30访问是单个ip(排除手机访问以外),这个只有在攻击的时候开启,很有效果
31 location / {
32 root /www/html;
33 #proxy
34if ($http_x_forwarded_for ~ ‘^d+.d+.d+.d+Wsd+.d+.d+.d+$‘){ #这个是匹配两个ip的
35return503;
36 }
37 index index.php index.html index.htm;
38 include .htaccess;
39 }
4041423,利用nginx limit_zone、limie_req_zone、limit_speed_zone(这个模块需要安装)来控制并发连接数、连接频率、带宽
43 下载nginx第三方模块nginx_limit_speed_module-master.zip
44cd nginx编译目录
45 ./configure 之前编译参数 --add-module=模块目录
46make
47 cp objs/nginx 到nginx安装目录sbin/nginx
4849http {
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}
5455server {
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
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!