排行榜 统计
  • 文章总数:649 篇
  • 评论总数:10704 条
  • 分类总数:4 个
  • 最后更新:4月4日
none

通过nginx日志分析IP、PV、UV并封禁可疑IP详解

本文阅读 3 分钟
首页 正文
本文最后更新于2023年01月05日,已超过850天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

您阅读这篇文章共耗时:

  今天突然想看下自己的网站的访问量,本来以为阿里云控制台有可视化界面,可是没有找到,因此,采用了服务生成,通过访问日志可以初步诊断你的网站有没有被DDOS新关键词,或者查看你的日均访问量。当然,如果你是一名开发人员,完全可以用代码实现可视化展示,一劳永逸.....

  

  参数统一说明

  查找所有访问者ip方法

  

awk '{print $1}' /usr/local/nginx/log/access.log |sort |uniq -c|sort -n

  得到如下结果,前面是ip的访问次数,后面是ip,很明显我们需要把访问次数多的ip并且不是蜘蛛的ip屏蔽掉,如下面结果,

  若 66.249.79.84 不为蜘蛛则需要屏蔽:

  

     89 106.75.133.167
     90 118.123.114.57
     91 101.78.0.210
     92 116.113.124.59
     92 119.90.24.73
     92 124.119.87.204
     119 173.242.117.145
     4320 66.249.79.84

  打印到文件:也可以用如下命令,将日志结果以文件形式生成

  

awk '{print $1}' /usr/local/nginx/log/access.log |sort |uniq -c|sort -n > test.log 2>&1

  屏蔽IP的方法

  在nginx的配置目录下面,新建屏蔽ip文件,命名为.conf,以后新增加屏蔽ip只需编辑这个文件即可。

  加入如下内容并保存:

  

deny 66.249.79.84;

  如果配置有问题就需要检查下哪儿有语法问题,如果没有问题,需要执行下面命令,重载 nginx 配置文件

  

service nginx  reload

  注意

  屏蔽ip的配置文件既可以屏蔽单个ip,也可以屏蔽ip段,或者只允许某个ip或者某个ip段访问

  

//屏蔽单个ip访问
 
deny IP; 
 
//允许单个ip访问
 
allow IP; 
 
//屏蔽所有ip访问
 
deny all; 
 
//允许所有ip访问
 
allow all; 
 
//屏蔽整个段即从123.0.0.1到123.255.255.254访问的命令
 
deny 123.0.0.0/8
 
//屏蔽IP段即从123.45.0.1到123.45.255.254访问的命令
 
deny 124.45.0.0/16
 
//屏蔽IP段即从123.45.6.1到123.45.6.254访问的命令
 
deny 123.45.6.0/24
 
//如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
//那需要你在guolv_ip.conf中这样写
 
allow 1.1.1.1; 
allow 1.1.1.2;
deny all;

  更多

  筛选某天的访问ip

  注意日期格式:2021-03-23,这个要看具体access.log日志日期格式,有的是04/Mar/2022 这种格式来体现日期,根据自身情况填写

  

cat access.log | grep '2021-03-23' | awk '{print $1}'  | sort | uniq -c | sort -nr -k1 | head -n 10

  sed命令打印出某个时间段之间的

  

sed -n '/2021-03-23T10:40:00/,/2021-03-23T10:50:10/p' access.log | awk '{print $1}'  | sort | uniq -c | sort -nr -k1 | head -n 10

  多少分钟前的ip访问次数排序

  

sed -n "/date -d "1 minute ago" +"%Y-%m-%dT%H:%M:%S"/,/date  +"%Y-%m-%dT%H:%M:%S"/p" access.log | awk -F '"' '{ print $8 }'  | sort | uniq -c | sort -nr -k1 | head -n 10

  或

  

cat /var/log/nginx/access.log | grep date -d "1 minutes ago" +"%Y-%m-%d"T"%H:%M"|awk -F '"' '{ print $8 }'  |sort |uniq -c |sort -rn |  head -n 10

  根据访问IP统计UV

  

awk '{print $1}'  access.log|sort | uniq -c |wc -l

  统计访问URL统计PV

  

awk '{print $7}' access.log|wc -l

  查询访问最频繁的URL

  

awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more

  根据时间段统计查看日志

  

 cat  access.log| sed -n '/14/Mar/2015:21/,/14/Mar/2015:22/p'|more

本文来自投稿,不代表本站立场,如若转载,请注明出处:http://xuan.ddwoo.top/index.php/archives/785/
-- 展开阅读全文 --
robots是什么?robots.txt如何写?(robots.txt有什么用)
« 上一篇 01-05
linux环境下搭建FTP服务器
下一篇 » 01-05
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

发表评论

本站已加入互联网信息服务许可,请规范您的言行哦~

成为第一个评论的人

作者信息

热门文章

珍惜时间哦~

今日一言

- -
加载中...
换一句

标签TAG

热评文章