Pular para conteúdo

dynamic-limit-req: módulo NGINX para bloquear dinamicamente IP e liberá-la periodicamente

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

  • RedHat Enterprise Linux 7, 8, 9 e 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 e 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

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_http_dynamic_limit_req_module.so;

Este documento descreve o nginx-module-dynamic-limit-req v1.9.3 lançado em 29 de janeiro de 2021.


Introdução

O módulo ngx_dynamic_limit_req_module é usado para bloquear dinamicamente IP e liberá-lo periodicamente.

Princípio

O módulo ngx_dynamic_limit_req_module é usado para limitar a taxa de processamento de requisições por uma chave definida, em particular, a taxa de processamento de requisições provenientes de um único endereço IP. A limitação é feita usando o método “balde furado”.

Sobre

Este módulo é uma extensão baseada no ngx_http_limit_req_module.

Doar

Os desenvolvedores trabalham incansavelmente para melhorar e desenvolver o ngx_dynamic_limit_req_module. Muitas horas foram dedicadas para fornecer o software como ele é hoje, mas este é um processo extremamente demorado e sem recompensa financeira. Se você gosta de usar o software, considere fazer uma doação para os desenvolvedores, para que eles possam dedicar mais tempo à implementação de melhorias.

### Alipay: Alipay

Extensão

Este módulo pode funcionar com RedisPushIptables, onde a camada de aplicação combina com a camada de rede para interceptar. Embora a interceptação na camada de rede economize recursos, também existem deficiências. Supondo que apenas uma interface específica seja filtrada e nenhuma outra interface seja filtrada, aquelas que não precisam ser filtradas também ficarão inacessíveis. Embora o controle preciso não seja possível na camada de rede ou na camada de transporte, pode ser controlado de forma precisa na camada de aplicação. Os usuários precisam avaliar qual solução é mais adequada para o evento no momento.

Api-count

Se você deseja usar a função de contagem de API, use limithit-API_alerts. Como nem todos precisam desse recurso, ele não foi mesclado ao tronco. Usuários que não precisam desse recurso podem ignorar esta descrição.

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 é compatível com as seguintes versões do nginx:

Autor Gandalf zhibu1991@gmail.com

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-dynamic-limit-req.