python控制nginx禁封ip

nginx中的access.log最近有大量的用户访问,怎么样屏蔽掉在一定时间段内访问次数多的ip呢?

测试准备:

  两个tomcat,一个nginx做均衡负载,服务器上装有python3

  python脚本

#脚本每60s循环一次,抓取到超过200次以上的ip地址写入rainbol_ip.conf文件中,重启nginx禁封生效
import time
import datetime
import os WENJIAN='/etc/nginx/rainbol_ip.conf'
point = 0
os.system("nginx -s reload")
while True:
with open('access.log', encoding='utf-8') as f:
if f:
point_action = f.seek(point)
all_ip = []
for i in f:
ip = i.split("-")[0]
all_ip.append(ip)
point = f.tell()
all_ip_set = set(all_ip)
for i in all_ip_set:
if all_ip.count(i) > 200:
with open(WENJIAN, encoding='utf-8') as f1:
des = f1.read().split()
if not des or i in des:
with open(WENJIAN, 'a+', encoding='utf-8') as f2:
f2.write("deny " + i + "; # %s禁封\n" % datetime.datetime.now())
os.system("nginx -s reload")
time.sleep(60)

  新增加一个配置文件(可自定)和nginx.conf放在一个目录下  touch rainbol_ip.conf

  把python脚本放在access.log同目录中

  nginx.conf中http{}或者server{}块中加入include rainbol_ip.conf;

测试开始:

  重启nginx  nginx -s reload

  启动python脚本文件后台执行  python3 access.log &

  使用jmeter压测,当一段时间后访问页面

  

查看禁封配置日志  cat rainbol_ip.conf

nginx禁封规则:

//屏蔽单个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允许条件一定要写在deny前面不然不生效,之后重启nginx即可 allow 1.1.1.1;
allow 1.1.1.2;
deny all; 参考地址https://blog.csdn.net/u013372487/article/details/51841364/

版权声明:本文原创发表于 博客园,作者为 RainBol本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

使用python控制nginx禁封ip的更多相关文章

  1. 利用python获取nginx服务的ip以及流量统计信息

    #!/usr/bin/python #coding=utf8 log_file = "/usr/local/nginx/logs/access.log" with open(log ...

  2. python反爬之封IP

    # requests是第三方库,需要安装 pip install requests import requests # 在日常的爬虫中,封ip也是一个很常用的反爬虫手段,遇到这种情况,我们只需要在每次 ...

  3. nginx deny 封IP

    官方文档地址:http://nginx.org/en/docs/http/ngx_http_access_module.html#deny Syntax: deny address | CIDR | ...

  4. nginx/iptables动态IP黑白名单实现方案

    nginx/iptables动态IP黑白名单实现方案 一.手动封IP步骤 1.Nginx手动封IP 1.获取各个IP访问次数 awk '{print $1}' nginx.access.log |so ...

  5. 利用 ipset 封禁大量 IP

    使用 iptables 封 IP,是一种比较简单的应对网络攻击的方式,也算是比较常见.有时候可能会封禁成千上万个 IP,如果添加成千上万条规则,在一台注重性能的服务器或者本身性能就很差的设备上,这就是 ...

  6. nginx封ip,禁用IP段的设置说明

    nginx的ngx_http_access_module 模块可以封配置内的ip或者ip段,语法如下: deny IP; deny subnet; allow IP; allow subnet; # ...

  7. nginx封IP脚本

    #!/bin/bash max= confdir=/etc/nginx/conf.d/blockips.conf logdir=/var/log/nginx/access.log echo " ...

  8. python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)【转】

    前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下.   apach ...

  9. httpd进程数统计,IP封禁,IP连接数量情况查看

    ps -ef|grep httpd|wc -l 统计httpd进程数,连个请求会启动一个进程,使用于Apache服务器. 查看Apache的并发请求数及其TCP连接状态:netstat -n | aw ...

随机推荐

  1. Traking-Learning-Detection TLD经典论文部分翻译

    摘要 本文研究视频流中未知目标的长期跟踪问题.在第一帧,通过选定位置和大小定义跟踪目标.在接下来的每一帧中,跟踪任务是确定目标的位置和大小或者说明目标不存在.我们提出了一种新颖的跟踪框架(TLD),明 ...

  2. extract()函数:用于从一个date或者interval类型中截取到特定的部分

    extract()函数:用于从一个date或者interval类型中截取到特定的部分 ### extract 语法extract ( { year | month | day | hour | min ...

  3. CSS 按钮水波纹特效

    /* 按钮反馈之波纹 */ .ripple { position: relative; /* overflow:hidden */  打开注释及效果不扩散在外 } .ripple:focus{ out ...

  4. 6、rabbitmq&java代码操作

    记住四个注解 存: rabbitTemplate.convertAndSend("bw","我要红包"); 取: @Component @RabbitListe ...

  5. JDK1.8 的 HashMap 源码之文件注释

    文章目录 null 插入,key的位置变化 迭代操作时间 性能因素 负载因子 Comparable 加锁 迭代器修改 null 插入,key的位置变化,迭代操作时间,性能因素,负载因子,Compara ...

  6. C++_自引用指针this

    自引用指针this 例 3.1 this指针的引例 #include<iostream.h> class A{ public: A(int x1){ x=x1; } void disp() ...

  7. python 之 并发编程(开启子进程的两种方式,进程对象的属性)

    第九章并发编程 同一个程序执行多次是多个进程 import time import os ​ print('爹是:',os.getppid()) #父进程PID,(pycharm) print('me ...

  8. TCP/IP协议图--TCP/IP基础

    1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议.实际生活当中有时也确实就是指这两种协议.然而在很多情况下,它只是利用 IP 进行通信时所 ...

  9. RAP2 前后端开发利器搭建

    RAP2 是一个api管理系统,前后端协作开发的利器. 在线体验地址http://rap2.taobao.org Web接口管理工具,开源免费,接口自动化,MOCK数据自动生成,自动化测试,企业级管理 ...

  10. vue实现简单的点击切换颜色

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...