nginx 防垃圾流量的perl清洗指令碼

來源:互聯網
上載者:User

  1、根據nginx的訪問日誌,根據匹配規則查出來源網域名稱,按照來源網域名稱的在一定時間內的訪問量來確定屏蔽對象

  將下面的指令碼放入到系統定時任務中,定時(2-5分鐘,可根據具體情況做相應調整)執行。

  確定一個判斷不正常的流量的數量,凡是大於該數量的來源一律清洗。

  當然這裡有可能會有誤判,所以在後面將正常的來源地址過濾掉。

  cat purge_traffic.sh

  #!/bin/bash

  if [ -f /var/log/nginx/www-access.log ]; then

  tail -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.log

  cat /tmp/cps_site.log | awk '{if( $1 > 100 ){print $2}}' > /tmp/purge_cps.log

  fi

  2、nginx中調用的perl指令碼,當請求進來時,通過下面的指令碼判斷Referer地址是否來自上面產生的需要清理的網域名稱。

  perl判斷指令碼,當發現來源地址匹配時返回1

  cat purgetraffic.pm

  package purgeTraffic;

  use nginx;

  sub purge {

  my $r = shift;

  my $ua = $r->header_in("Referer");

  if(! $ua ) { return 0; }

  open(FILES, "/tmp/purge_cps.log") || return 0;

  @cps_file=;

  close(FILES);

  foreach (@cps_file) {

  my $eachcps = $_;

  chomp $eachcps;

  #$r->print($eachcps .'| ');

  if ( $ua =~ m/$eachcps/ ) {

  #return HTTP_NOT_ALLOWED;

  return 1;

  }

  }

  return 0;

  }

  1;

  __END__

  3、nginx.conf 中調用perl指令碼,符合清洗規則的來源直接返回 404,

  http {

  ...

  perl_modules /etc/nginx;

  perl_require purgetraffic.pm;

  ...

  perl_set $purge purgeTraffic::purge;

  server {

  server_name www.xxx.cn;

  if ($purge = 1) { return 404; } #屏蔽垃圾流量

  ...

  }

  }

  重新載入nginx,完成自動流量清洗

  還可以稍微修改一下perl指令碼,增加一個白名單,減少誤判的可能。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.