#获取日期
date=`date +"%y%m%d"`
#设置日志路径
data="/data/logs/abc.com/access.log"
#配置文件路径
conf="/usr/local/nginx/conf/selfconf/abc.conf"
#设置要监控的地址,多个地址用空格隔开,监控全局设为null
url='/pub/send/yzm/'
#白名单IP
Whitelist="1.1.1.1|2.2.2.2"
#过滤不计次错误返回值
error_num="403|503"
#最大次数
maxnum= #判断日志是否为空
if [ -s "$data" ];
then
#将每分钟的日志转存到每日日志里去
cat $data >> $data$date #获取要禁的ip
for aurl in $url;
do
#判断是否有设置监控地址,否则全局监控
if [[ "$url"x == "null"x ]];
then
echo "grep -Ev $Whitelist|$error_num $data | awk '{print $1}' |sort -t'.' -k1,1nr -k2,2nr -k3,3nr -k4,4nr | uniq -c |awk -v max=$maxnum '{if($1>max){print $2}}'"
deny=`grep -Ev "$Whitelist|$error_num" $data | awk '{print $1}' |sort -t'.' -k1,1nr -k2,2nr -k3,3nr -k4,4nr | uniq -c |awk -v max="$maxnum" '{if($1>max){print $2}}'`
else
deny=`awk '{if($7 == "'"$aurl"'"){print $0}}' $data | grep -Ev "$Whitelist|$error_num" | awk '{print $1}' |sort -t'.' -k1,1nr -k2,2nr -k3,3nr -k4,4nr | uniq -c |awk -v max="$maxnum" '{if($1>max){print $2}}'`
fi #判断是否为空
if [[ "$deny"x != ""x ]];
then
for adeny in $deny;
do
sed -i "/server {/a\deny $adeny;" $conf
#echo $adeny
done #添加日期
sed -i "/server {/a\\\n#$aurl $date" $conf #重启nginx
/usr/local/nginx/sbin/nginx -s reload
fi
done #清空日志
echo '' > $data
fi

nginx 根据url访问次数限制的更多相关文章

  1. 统计Apache或nginx日志里访问次数最多的前十个IP

    1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l 2.统计访问URL统计PV awk '{print $7}' access ...

  2. 统计nginx日志里访问次数最多的前十个IP

    awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10

  3. 使用python找出nginx访问日志中访问次数最多的10个ip排序生成网页

    使用python找出nginx访问日志中访问次数最多的10个ip排序生成网页 方法1:linux下使用awk命令 # cat access1.log | awk '{print $1" &q ...

  4. Nginx限制某个IP同一时间段的访问次数

    nginx可以通过HttpLimitReqModul和HttpLimitZoneModule配置来限制ip在同一时间段的访问次数. HttpLimitReqModul用来限制连单位时间内连接数的模块, ...

  5. nginx日志中访问最多的100个ip及访问次数

    nginx日志中访问最多的100个ip及访问次数 awk '{print $1}' /opt/software/nginx/logs/access.log| sort | uniq -c | sort ...

  6. nginx 和 tp兼容pathinfo和rewrite两种url访问方式

    环境:centos7,yum安装的nginx1.10.php-fpm,tp3.2 本方法只需要配置nginx.conf的一个文件就可以支持pathinfo和rewrite两种url访问方式 vim / ...

  7. 利用 awk 统计nginx 中某一个用户的访问次数

    线上总是会遇到攻击,所以就需要分析 access.log 看看那些用户的访问次数不正常,针对这些不正常的用户,要做处理,以 access.log为例说明下怎么统计. 通过 access.log 日志来 ...

  8. Nginx限制某个IP同一时间段的访问次数和请求数示例代码

    nginx可以通过ngx_http_limit_conn_module和ngx_http_limit_req_module配置来限制ip在同一时间段的访问次数. ngx_http_limit_conn ...

  9. nginx、TP框架实现兼容pathinfo和rewrite两种url访问方式

    环境:centos7,yum安装的nginx1.10.php-fpm,tp3.2 本方法只需要配置nginx.conf的一个文件就可以支持pathinfo和rewrite两种url访问方式 vim / ...

随机推荐

  1. vue 组件轮播联动

    组件轮播联动我使用的是 el-carousel 组件,具体代码如下: <el-carousel trigger="click" :interval="3000&qu ...

  2. 15.2,redis发布订阅

    发布publish 订阅subscribe Redis 通过 PUBLISH . SUBSCRIBE 等命令实现了订阅与发布模式. 举例1: qq群的公告,单个发布者,多个收听者 发布/订阅 实验 发 ...

  3. curl 编译

    curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本.支持很多协议:FTP, FTPS, HT ...

  4. PowerDesigner常用功能总结

    1.PowerDesigner设计表时显示注释列Comment 选中准备编辑的表,[右键]->[Properties]->[Columns]->[Customize Columns ...

  5. js限制文本框只能输入特定字符

    限制只能输入数字 // ---------------------------------------------------------------------- // <summary> ...

  6. Percona-Tookit工具包之pt-slave-find

      Preface       If we want to check out how many slaves in our replication environment.We can execut ...

  7. Python 爬取网页中JavaScript动态添加的内容(二)

    使用 selenium + phantomjs 实现 1.准备环境 selenium(一个用于web应用程测试的工具)安装:pip install seleniumphantomjs(是一种无界面的浏 ...

  8. Windows+Python 3.6环境下安装PyQt4

    第一步:下载.whl,地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4,这里可以下载不同的python版本对应的包. 第二步:选择一个目录,将下 ...

  9. TO_CHAR 和 TO_DATE的一些用法总结

    对于初学者来说,日期处理那快一向是问题的集中地.今天刚刚看了个案例,将的就是ORACLE日期处理中的错误,其关键原因,就是TO_CHAR 和TO_DATE的用法不清晰,,事实上,这两个东西也特别容易混 ...

  10. Python处理Sqlite3数据库

    sqlite3比较小众 本章主要通过Python Code表述如何增.查.改.删 sqlite3 DB 一.直接上代码 #!/usr/bin/env python # -*- coding: utf- ...