Nginx IP封禁及自动封禁IP的实现

 更新时间:2023年01月19日 10:40:38   作者:佞臣888  
本文主要介绍了Nginx IP封禁及自动封禁IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.在Nginx的conf目录下创建一个blockip.conf文件

2.里面放需要封禁的IP,格式如下

deny 1.2.3.4;

3.在Nginx的HTTP的配置中添加如下内容

include blockips.conf;

在这里插入图片描述

4.重启 Nginx 

/usr/local/nginx/sbin/nginx -s reload

然后你就会看到IP被封禁了,你会喜提403;

在这里插入图片描述

7.小思考:如何实现使用Nginx自动封禁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_list"
then
        #为空写入 11.log中,并重新启动ngnix
        echo "为空"  >> /usr/local/nginx/logs/11.log

        /usr/local/nginx/sbin/nginx -s reload

else
        #如果不为空 前面加上 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.log

fi

操作三:使用crontab定时,来实现访问每分钟超过60的

这个crontab 就不多讲的,不会的可以去看看我之前的博客地址如下
https://www.jb51.net/article/144881.htm

直接实操吧:

crontab -e 
* * * * * cd /usr/local/nginx/logs/ && sh ip_test.sh  每一分钟运行一次
systemctl restart crond.service 重启一下配置既可

在这里插入图片描述

到此这篇关于Nginx IP封禁及自动封禁IP的实现的文章就介绍到这了,更多相关Nginx IP封禁内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx下修改WordPress固定链接导致无法访问的问题解决

    Nginx下修改WordPress固定链接导致无法访问的问题解决

    这篇文章主要介绍了Nginx下修改WordPress固定链接导致无法访问的问题解决,同时作者也给出了官方关于修改固定链接的方法,需要的朋友可以参考下
    2015-07-07
  • nginx快速部署一个网站服务(多域名+多端口)

    nginx快速部署一个网站服务(多域名+多端口)

    本文主要介绍了nginx快速部署一个网站服务,并实现多域名和多端口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10
  • Nginx配置实现高效精准的流量限制策略详解

    Nginx配置实现高效精准的流量限制策略详解

    限流(Rate Limitting)是服务降级的一种方式,通过限制系统的输入和输出流量以达到保护系统的目的,下面我们就来看看如何通过配置Nginx实现高效精准的流量限制策略吧
    2024-02-02
  • nginx修改默认运行80端口的方法

    nginx修改默认运行80端口的方法

    这篇文章主要给大家介绍了关于nginx是如何修改默认运行80端口的方法,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-04-04
  • windows系统安装配置nginx环境

    windows系统安装配置nginx环境

    这篇文章介绍了windows系统安装配置nginx环境的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 详解Nginx的配置函数对于请求体的读取

    详解Nginx的配置函数对于请求体的读取

    这篇文章主要介绍了Nginx的配置函数对于请求体的读取,深入Nginx的内核配置中进行讲解,需要的朋友可以参考下
    2015-12-12
  • 永中文档在线转换预览基于nginx配置部署方案

    永中文档在线转换预览基于nginx配置部署方案

    这篇文章主要为大家介绍了永中文档在线转换预览基于nginx配置部署方案的实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Nginx 403 forbidden的解决办法

    Nginx 403 forbidden的解决办法

    这篇文章主要介绍了Nginx 403 forbidden的解决办法,,需要的朋友可以参考下
    2014-03-03
  • Nginx多层代理配置方法

    Nginx多层代理配置方法

    这篇文章主要介绍了Nginx多层代理配置方法,此篇文章只给大家介绍nginx的多级代理配置代码,需要的朋友可以参考下
    2017-08-08
  • Nginx IP封禁及自动封禁IP的实现

    Nginx IP封禁及自动封禁IP的实现

    本文主要介绍了Nginx IP封禁及自动封禁IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论