Eu me deparei com um problema bastante interessante ao tentar configurar o NGinx. Eu corro um pequeno servidor web que serve tudo via HTTPS com o NGinx 1.13.8. Como é típico para tal configuração, ele também escuta na porta 80 e emite um redirecionamento geral para todas as solicitações para a porta 443 com o mesmo URI, usando o seguinte fragmento de configuração para conseguir isso:
location / {
return 301 https://$server_name$request_uri;
}
Isso por si só funcionou muito bem para o que eu preciso para isso. No entanto, comecei a obter algum tráfego obviamente falso e facilmente identificável (períodos aleatórios de cerca de 5 minutos onde recebo milhares de novas conexões de IPs aparentemente aleatórios, todos com um prefixo comum no cabeçalho User-Agent, todos fazendo exatamente o mesmo pedido ( HEAD / HTTP/1.1
), todos deixando a conexão aberta até o tempo limite, e todos nunca seguindo o redirecionamento).
Idealmente, gostaria de fechar essas conexões assim que elas forem identificadas para minimizar a quantidade de recursos que elas desperdiçam. Atualmente, eu criei este fragmento de configuração modificado para fazer isso:
location / {
return 301 https://$server_name$request_uri;
}
location = / {
if ($method = "HEAD") {
set $drop M;
}
if ($http_user_agent ~* "Dalvik/2.1.0 (Linux U ") {
set $drop "U${drop}";
}
if ($drop = "UM") {
return 444;
}
}
No entanto, isso parece não funcionar (já que os registros ainda mostram esses picos de tráfego retornando inteiramente a 301. Também tentei correspondência menos específica (apenas correspondências gerais no cabeçalho User-Agent ou no método) dentro o primeiro bloco de localização e também não parece funcionar.
Então, eu tenho duas perguntas:
Tags nginx linux web-server