經過分析nginx的日誌來過濾出訪問過於頻繁的IP地址,而後添加到nginx的blockip.conf,並重啓nginx
腳本以下:
#!/bin/sh
nginx_home = /Data/app_1/nginx
log_path = /Data/logs
/usr/bin/tail -n50000 $log_path/access.log \
|awk ‘$8 ~/aspx/{print $2,$13}’ \
|grep -i -v -E 「google|yahoo|baidu|msnbot|FeedSky|sogou」 \
|awk ‘{print $1}’|sort|uniq -c |sort -rn \
|awk ‘{if($1>150)print 「deny 「$2″;」}’> $nginx_home/conf/vhosts/blockip.conf
/bin/kill -HUP `cat $nginx_home/nginx.pid`
也能夠經過分析nginx日誌過濾出頻繁訪問IP,直接用iptables屏蔽這個IP,就用不着重啓nginx了,而且屏蔽效果更好。
單個IP的命令是
iptables -I INPUT -s 124.115.0.199 -j DROP
封IP段的命令是
iptables -I INPUT -s 124.115.0.0/16 -j DROP
封整個段的命令是
iptables -I INPUT -s 194.42.0.0/8 -j DROP
封幾個段的命令是
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP
剛纔不當心搞的本身都連不上了-_-!!!
iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP
之後用這種只封80端口就好了,不會出問題!
iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP
解封
iptables -F
清空
iptables -D INPUT 數字nginx
閱讀全文>>app