当前位置:首页 > 服务器技术 > nginx

nginx 防攻击

             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)!