Você poderia usar algo assim
if ($http_user_agent ~* "Vonna.com" ) {
return 444;
}
444 fechará a conexão sem retornar nada, garantindo o menor impacto possível. No entanto, se você quiser informar possíveis usuários legítimos, use algo como 400, talvez.
Além disso, talvez bloqueie por referenciador, embora a maioria dos bots também falsifique isso.
No que diz respeito ao bloqueio de todo o HTTP 1.0, você deve verificar este primeiro. Se você ainda quiser implementar o bloco como uma solução temporária, algo assim deve funcionar.
if ($server_protocol ~* "HTTP/1.0") {
return 444;
}
Basicamente, a mesma coisa que você tinha, exceto sem reescrever - se eu estou lendo corretamente, seu uso fez com que ficasse em um loop permanente.