La directiva Nginx le limit_rate
permite especificar la velocidad a la que le gustaría calificar las respuestas límite, por ejemplo
location / {
if ($slow) {
limit_rate 4k;
}
}
La documentación de Nginx está aquí . (de la documentación verá que su backend puede tomar la decisión y solicitar a Nginx que limite la tarifa del cliente)
La forma de obtener este $slow
conjunto variable depende de su configuración. Lo más fácil sería configurarlo mediante el geo
mapeo:
geo $slow {
default 0;
1.2.3.0/24 1;
}
El mapeo "Geo" es una dependencia $slow
basada en la dirección IP del cliente. Es 0 por defecto y 1 si la dirección IP de un cliente está en la 1.2.3.0/24
subred. Consulte la documentación de Nginx sobre "geo" aquí
El uso de "fail2ban" es una evolución razonable de toda esta solución. Puede usar "fail2ban" para detectar automáticamente actividades inusuales y recopilar IP para Nginx y luego volver a cargar Nginx para que vuelva a leer las listas de direcciones IP que deben ralentizarse o bloquearse.
La mejor manera de lidiar con este spammer es instalar y configurar correctamente fail2ban. Fail2ban buscará patrones en archivos de registro y bloqueará todos los ips que envíen spam a su sitio. Por supuesto, debe configurarlo para buscar el patrón adecuado.
fuente