cjc me colocou no caminho certo. Usar access_log em uma instrução if por si só não é possível (você recebe um erro nginx: [emerg] "access_log" directive is not allowed here ). Portanto, a solução alternativa é a seguinte:
if ($http_user_agent ~* (crawler) ) {
set $crawler 'yes';
}
location ~ .* {
if ($crawler = 'yes') {
access_log /var/log/nginx/blockedbots.log;
return 200;
}
}