在ngnix的conf目录下创建一个blockip.conf文件
里面放需要封禁的ip,格式如下
deny 1.2.3.4;
在ngnix的http的配置中添加如下内容
include blockips.conf;
重启 ngnix
/usr/local/nginx/sbin/nginx -s reload
然后你就会看到ip被封禁了,你会喜提403;
小思考:如何实现使用ngnix自动封禁ip的功能
1.awk统计access.log,记录每分钟访问超过60次的ip,然后配合nginx进行封禁2.编写shell脚本3.crontab定时跑脚本
好了上面操作步骤列出来了,那我们先来实现第一个吧
操作一:awk统计access.log,记录每分钟访问超过60次的ip
awk '{print $1}' access.log | sort | uniq -cd | awk '{if($1>60)print $0}'1. awk '{print $1}' access.log 取出access.log的第一列即为ip。2. sort | uniq -cd 去重和排序3. awk '{if($1>60)print $0}' 判断重复的数量是否超过60个,超过60个就展示出来
操作二:编写shell脚本,实现整体功能(写了注释代码)
#不能把别人ip一直封着吧,这里就清除掉了echo > /usr/local/nginx/conf/blockip.conf#前面最开始编写的统计数据功能ip_list=$(awk '{print $1}' access.log | sort | uniq -cd | awk '{if($1>60)print $0}')#判断这个变量是否为空if test -z $ip_listthen #为空写入 11.log中,并重新启动ngnix echo 为空 >> /usr/local/nginx/logs/11.log /usr/local/nginx/sbin/nginx -s reloadelse #如果不为空 前面加上 deny格式和ip写入blockip.conf中 echo deny $ip_list > /usr/local/nginx/conf/blockip.conf #因为前面携带了行数,所有我们需要去除掉前面的行数,写入后在读取一次 ip_list2=$(awk '{print $3}' /usr/local/nginx/conf/blockip.conf) #最后再把读取出来的值,在次写入到blockip.conf中 echo deny $ip_list2;> /usr/local/nginx/conf/blockip.conf #重启ngnix /usr/local/nginx/sbin/nginx -s reload #清空之前的日志,从最新的开始截取 echo > /usr/local/nginx/logs/access.logfi
操作三:使用crontab定时,来实现访问每分钟超过60的
crontab -e * * * * * cd /usr/local/nginx/logs/ && sh ip_test.sh 每一分钟运行一次systemctl restart crond.service 重启一下配置既可
基于无线通信的电池组状态监测系统
大数据建模、分析、挖掘技术应用研修班的通知
佳能EOS C70将是电影EOS阵容中的第一个摄像头
5G网络是构建智慧城市的基础吗
广和通携手紫光展锐共同推动5G R16快速商用落地
Ngnix IP封禁以及实现自动封禁IP
使用高通的Snapdragon 820启用深度相机
gh200和h100哪个更好
海信手机金刚4续航体验 到底怎么样
新型PMDLine传感器功能特点介绍
以太坊2.0发布最终规范是怎样的
焊接接头形式分类
一款可以测定面粉的物理特性包含面团的拉伸阻力
关于步进电机减速机丢步和失步的分析
二叉排序树AVL如何实现动态平衡
聊聊在手机上开启快速swap的可能性
2012工业与汽车应用开发者论坛压轴大戏11月1日上演
PDP等离子电视维修经验
2020山东科学技术奖颁奖啦!海信7个项目获奖
爱特混合信号功率管理工具为FUSION混合信号FPGA提供完