nginx 動態添加ip黑名單


# !/bin/bash
# 進入日志目錄
cd /www/wwwlogs;
# 遍歷訪問日志文件 過濾錯誤日志
dirs=`ls ./*.log | grep -v error.log`;
# 設置IP黑名單配置文件
blockip_file='/www/server/nginx/conf/block_ip.conf';

for dir in ${dirs[@]} 
do
    # 列出最近5000條訪問數據 過濾掉蜘蛛 列出Ip 並排序
    # 計算出ip重復的次數並記錄在旁邊
    # 排序后 把重復次數大於 50的ip 寫入ip黑名單內
    tail -n 5000 $dir \
    | grep -v 'splider' \
    | awk '{print $1}' \
    | sort \
    | uniq -c \
    | sort -rn \
    | awk '{ if ($1 > 50) print "deny "$2";"}' >> $blockip_file;
done

# 過濾正常允許訪問的ip
allow_ip=`cat /www/server/nginx/conf/allow_ip.conf`;
# 將阻塞ip去重后再寫入
ips=`cat $blockip_file | sort -u | grep -v "$allow_ip"`
echo "$ips" > $blockip_file;
# 重載nginx配置
nginx -s reload;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM