防止程序调用,原理:查看日志5W条记录,对单个IP访问量进行统计并记数超过1000视为黑名单IP,每半小时检查执行一次脚本

一、黑名单配置

在http模块最后加上配置

 #黑名单设置     
   include /usr/local/nginx/conf/blockip.conf;

二、创建脚本

#!/bin/bash
#取最近5w条数据
tail -n50000 /usr/local/nginx/logs/access.log \
#过滤需要的信息行ip等
|awk '{print $1,$12}' \
#过滤爬虫
|grep -i -v -E "google|yahoo|baidu|msnbot|FeedSky|sogou|360|bing|soso|403|admin" \
#统计
|awk '{print $1}'|sort|uniq -c|sort -rn \
#超过1000加入黑名单
|awk '{if($1>1000)print "deny "$2";"}' >> /usr/local/nginx/conf/blockip.conf
#重启nginx生效
/usr/local/nginx/sbin/nginx -s reload

三、制定执行计划

*/30 * * * * . /etc/profile;/bin/sh /root/project/nginx_blockip_task/blockip.sh

四、加入任务

crontab -e

五、其他方案

https://www.jb51.net/article/168907.htm

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐