- #!/bin/sh
- ########################################
- nginx_home="/usr/local/nginx/conf/vhosts" #你的nginx配置目录
- log_path="/usr/local/nginx/logs/access.log" #你的日志路径
- ########################################
- tail -100 ${log_path} \
- |grep -i -v -E "dnspod|google|yahoo|baidu|msnbot|FeedSky|sogo" \
- |awk '{print $1}' |sort |uniq -c|sort -nr|head \
- |awk '{if($1>80)print "deny "$2";"}' > ${nginx_home}/deny.conf
注意:如果没有deny.conf这个文件,自己创建完毕后需要重启nginx服务
#关键变量解释
#tail -100 ${log_path} 读取日志中最近100行记录
#|grep -i -v -E "dnspod|google|yahoo|baidu|msnbot|FeedSky|sogo" 搜索引擎等蜘蛛除外
#|awk '{print $1}' |sort |uniq -c|sort -nr|head 合并重复记录,并计算数量
#|awk '{if($1>80)print "deny "$2";"}' > ${nginx_home}/deny.conf
#多于80行的IP将在nginx配置目录生成 Nginx deny 语法的配置文件给予调用。
编辑回复