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:

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.