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.