Estoy buscando un enfoque para sincronizar IP de velocidad limitada entre nodos nginx. Quiero registrar estas IP y luego insertarlas en una base de datos y desarrollar un agente para actualizar las IP bloqueadas en los archivos de configuración de nginx.
Mi desafío es encontrar una manera de limitar las IP de nginx con 429
un código de estado.
Entonces, ¿es posible registrar IP de velocidad limitada en un archivo específico en nginx o sugiere algún otro enfoque para sincronizar IP de velocidad limitada entre nodos?
Respuesta1
Sí, puedes hacer eso, y hay un ejemplo similar incluso en eldocumentación nginx.
La access_log
directiva también toma un if=
parámetro opcional que evalúa las variables que se le asignan y registra solo si el resultado no es 0 o una cadena vacía. Combinado con el hecho de que puedes tener más de uno access_log
en un nivel, puedes iniciar sesión de manera diferente según tus necesidades.
Sin embargo, primero necesitará un map
mapa para mapear elEstado de respuesta HTTPle interesa a una variable. Recuerda que map
debe estar fuera del server
bloque.
map $status $rate_limited {
default 0;
429 1;
}
Luego, en el server
bloque correspondiente declararás tu access_log
.
access_log /var/log/nginx/rate_limited.log combined if=$rate_limited;
Recuerde que cualquier aparición de access_log
en un nivel anula todas las demás de niveles superiores, por lo que querrá copiar (o mejor, include
) las access_log
directivas de niveles superiores que también desee utilizar.