Corrigi minha configuração e consegui o que queria:
server {
listen 80;
server_name jpmelos.com;
root /var/html/jpmelos.com/public;
index index.html;
autoindex off;
location / {
try_files $uri $uri/ @redirect;
}
location @redirect {
auth_basic on;
auth_basic_user_file /htpasswd/jpmelos;
root /var/html/jpmelos.com;
}
}
Mova a primeira diretiva raiz para o bloco server , só porque é uma boa prática. Em seguida, mova a diretiva index também, para evitar a repetição. Em seguida, altere a diretiva try_files . Isso tentará $uri file, depois o $uri diretório usando a diretiva index e, em seguida, redirecionando.
Ao redirecionar, defina as configurações de autenticação e atualize a raiz para o novo valor, apenas para o bloco location .