Registro de IP de velocidad limitada de nginx en un archivo específico

Registro de IP de velocidad limitada de nginx en un archivo específico

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 429un 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_logdirectiva 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_logen un nivel, puedes iniciar sesión de manera diferente según tus necesidades.

Sin embargo, primero necesitará un mapmapa para mapear elEstado de respuesta HTTPle interesa a una variable. Recuerda que mapdebe estar fuera del serverbloque.

map $status $rate_limited {
    default 0;
    429     1;
}

Luego, en el serverbloque 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_logen un nivel anula todas las demás de niveles superiores, por lo que querrá copiar (o mejor, include) las access_logdirectivas de niveles superiores que también desee utilizar.

información relacionada