Você deve usar limit_except
:
limit_except GET HEAD {
auth_basic 'Restricted';
auth_basic_user_file /path/to/userfile;
}
Funciona desde o nginx 0.8.48, em versões mais antigas havia um bug em que fastcgi_pass
não era herdado dentro do bloco limit_except.