Registrando IPs com taxa limitada do nginx em um arquivo específico

Registrando IPs com taxa limitada do nginx em um arquivo específico

Estou procurando uma abordagem para sincronizar IPs com taxa limitada entre nós nginx. Quero registrar esses IPs e depois colocá-los em um banco de dados e desenvolver um agente para atualizar IPs bloqueados em arquivos de configuração do nginx.

Meu desafio é encontrar uma maneira de limitar os IPs nginx com 429código de status.

Então, é possível registrar IPs com taxa limitada em um arquivo específico no nginx ou você sugere alguma outra abordagem para sincronizar IPs com taxa limitada entre nós?

Responder1

Sim, você pode fazer isso, e um exemplo semelhante está até mesmo nodocumentação nginx.

A access_logdiretiva também usa um if=parâmetro opcional que avalia as variáveis ​​fornecidas a ela e registra apenas se o resultado não for 0 ou uma string vazia. Combinado com o fato de que você pode ter mais de um access_logem um nível, você pode registrar de forma diferente com base em suas necessidades.

Primeiro, porém, você precisará mapmapear oStatus da resposta HTTPvocê está interessado em uma variável. Lembre-se que mapdeve estar fora do serverbloco.

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

Então, no serverbloco relevante, você declarará seu arquivo access_log.

access_log /var/log/nginx/rate_limited.log combined if=$rate_limited;

Lembre-se de que qualquer aparência de access_logum nível substitui todas as outras de níveis superiores, então você desejará copiar (ou melhor, include) as access_logdiretivas de níveis superiores que você também deseja usar.

informação relacionada