nginx 动态添加ip黑名单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# !/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;

  

posted @   cidgur  阅读(1010)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
历史上的今天:
2020-03-18 vim 使用笔记
点击右上角即可分享
微信分享提示