今天公司的網站,有幾個IP過于頻繁的通路,頻繁查詢資料庫,導緻機器負載很高,于是根據實際情況 屏蔽掉通路頻繁的IP,問題得以解決,在這裡貼出來,供大家參考參考.
腳本需要根據實際的nginx log 格式,修改,取出 通路IP 和User-Agent.
在nginx配置檔案中添加一條配置
include ./vhost/blockip.conf;
#!/bin/bash
nginx_home=/usr/local/webserver/nginx
log_path=/usr/local/webserver/nginx/logs
tail -n50000 /usr/local/webserver/nginx/logs/access.log \
|awk '{print $1,$12}' \
|grep -i -v -E "google|yahoo|baidu|msnbot|FeedSky|sogou" \
|awk '{print $1}'|sort|uniq -c|sort -rn \
|awk '{if($1>1000)print "deny "$2";"}' >$nginx_home/conf/vhost/blockip.conf
/etc/init.d/nginx reload