Saltar a contenido

dynamic-limit-req: módulo de NGINX para bloquear dinámicamente IP y liberarla periódicamente

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-dynamic-limit-req
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-dynamic-limit-req

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_http_dynamic_limit_req_module.so;

Este documento describe nginx-module-dynamic-limit-req v1.9.3 lanzado el 29 de enero de 2021.


Introducción

El módulo ngx_dynamic_limit_req_module se utiliza para bloquear dinámicamente IP y liberarla periódicamente.

Principio

El módulo ngx_dynamic_limit_req_module se utiliza para limitar la tasa de procesamiento de solicitudes por una clave definida, en particular, la tasa de procesamiento de solicitudes provenientes de una única dirección IP. La limitación se realiza utilizando el método de "cubeta con fugas".

Acerca de

Este módulo es una extensión basada en ngx_http_limit_req_module.

Donar

Los desarrolladores trabajan incansablemente para mejorar y desarrollar ngx_dynamic_limit_req_module. Se han invertido muchas horas para proporcionar el software tal como es hoy, pero este es un proceso extremadamente que consume tiempo sin recompensa financiera. Si disfrutas usando el software, considera donar a los desarrolladores, para que puedan dedicar más tiempo a implementar mejoras.

### Alipay: Alipay

Extender

Este módulo puede trabajar con RedisPushIptables, la capa de aplicación coincide y luego la capa de red para interceptar. Aunque la interceptación en la capa de red ahorrará recursos, también hay deficiencias. Suponiendo que solo una interfaz específica sea filtrada y no se filtren otras interfaces, aquellas que no necesitan ser filtradas también serán inaccesibles. Aunque el control preciso no es posible en la capa de red o la capa de transporte, se puede controlar de manera precisa en la capa de aplicación. Los usuarios deben sopesar qué solución es más adecuada para el evento en ese momento.

Api-count

Si deseas utilizar la función de conteo de API, por favor utiliza limithit-API_alerts. Debido a que no todos necesitan esta función, no se ha fusionado en la rama principal. Los usuarios que no necesitan esta función pueden omitir esta descripción del párrafo.

git clone https://github.com/limithit/ngx_dynamic_limit_req_module.git
cd ngx_dynamic_limit_req_module
git checkout limithit-API_alerts
root@debian:~# redis-cli 
127.0.0.1:6379> SELECT 3
127.0.0.1:6379[3]> scan 0 match *12/Dec/2018* count 10000 
127.0.0.1:6379[3]> scan 0 match *PV count 10000
1) "0"
2) 1) "[13/Dec/2018]PV"
   2) "[12/Dec/2018]PV"
127.0.0.1:6379[3]> get [12/Dec/2018]PV
"9144"
127.0.0.1:6379[3]> get [13/Dec/2018]PV
"8066"
127.0.0.1:6379[3]> get [13/Dec/2018]UV
"214"

Este módulo es compatible con las siguientes versiones de nginx:

Autor Gandalf zhibu1991@gmail.com

GitHub

Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-dynamic-limit-req.