nginx 防垃圾流量的perl清洗脚本.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:3 大小:33KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

nginx 防垃圾流量的perl清洗脚本.doc

nginx防垃圾流量的perl清洗脚本.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://www.shoruba.com/"网络资源下载站HYPERLINK"http://www.shoruba.com/"http://www.shoruba.com/c6j编辑nginx防垃圾流量的perl清洗脚本1、根据nginx的访问日志,根据匹配规则查出来源域名,按照来源域名的在一定时间内的访问量来确定屏蔽对象将下面的脚本放入到系统定时任务中,定时(2-5分钟,可根据具体情况做相应调整)执行。确定一个判断不正常的流量的数量,凡是大于该数量的来源一律清洗。当然这里有可能会有误判,所以在后面将正常的来源地址过滤掉。catpurge_traffic.sh#!/bin/bashif[-f/var/log/nginx/www-access.log];thentail-10000/var/log/nginx/www-access.log|grep-E‘cps_site|tracert.php?source’|awk-F’"’‘{if($4~/http:/){print$4}}’|awk-F‘/’‘{print$3}’|grep-v-E‘.xxx.cn|.baidu.com|google.com’|sort|uniq-c|sort-nr|head-60>/tmp/cps_site.logcat/tmp/cps_site.log|awk‘{if($1>100){print$2}}’>/tmp/purge_cps.logfi2、nginx中调用的perl脚本,当请求进来时,通过下面的脚本判断Referer地址是否来自上面生成的需要清理的域名。perl判断脚本,当发现来源地址匹配时返回1catpurgetraffic.pmpackagepurgeTraffic;usenginx;subpurge{my$r=shift;my$ua=$r->header_in("Referer");if(!$ua){return0;}open(FILES,"/tmp/purge_cps.log")||return0;@cps_file=;close(FILES);foreach(@cps_file){my$eachcps=$_;chomp$eachcps;#$r->print($eachcps.’|‘);if($ua=~m/$eachcps/){#returnHTTP_NOT_ALLOWED;return1;}}return0;}1;__END__3、nginx.conf中调用perl脚本,符合清洗规则的来源直接返回404,http{...perl_modules/etc/nginx;perl_requirepurgetraffic.pm;...perl_set$purgepurgeTraffic::purge;server{server_namewww.xxx.cn;if($purge=1){return404;}#屏蔽垃圾流量...}}重新加载nginx,完成自动流量清洗还可以稍微修改一下perl脚本,增加一个白名单,减少误判的可能。以下内容为繁体版1、根據nginx的訪問日志,根據匹配規則查出來源域名,按照來源域名的在一定時間內的訪問量來確定屏蔽對象將下面的腳本放入到系統定時任務中,定時(2-5分鐘,可根據具體情況做相應調整)執行。確定一個判斷不正常的流量的數量,凡是大於該數量的來源一律清洗。當然這裡有可能會有誤判,所以在後面將正常的來源地址過濾掉。catpurge_traffic.sh#!/bin/bashif[-f/var/log/nginx/www-access.log];thentail-10000/var/log/nginx/www-access.log|grep-E‘cps_site|tracert.php?source’|awk-F’"’‘{if($4~/http:/){print$4}}’|awk-F‘/’‘{print$3}’|grep-v-E‘.xxx.cn|.baidu.com|google.com’|sort|uniq-c|sort-nr|head-60>/tmp/cps_site.logcat/tmp/cps_site.log|awk‘{if($1>100){print$2}}’>/tmp/purge_cps.logfi2、nginx中調用的