Na maioria das configurações PHP, há um location ~ \.php$ block que processa qualquer URI que termine com .php , portanto, a adição de restrições a outros location blocks afetará apenas os arquivos estáticos envolvidos. Consulte este documento para saber mais.
A solução mais limpa é usar um local de prefixo com o modificador ^~ , que garante que todos os URIs que começam com /phpmyadmin/ sejam processados por esse bloco e outros locations no nível superior não ignorem sua segurança . Consulte este documento para saber mais.
Como você descobriu, você precisará adicionar um location aninhado para manipular o PHP dentro desse bloco, mas todas as declarações de autenticação devem ser herdadas e não precisam ser repetidas dentro do bloco interno.
Por exemplo:
location ^~ /phpmyadmin/ {
allow 1.2.3.4;
deny all;
auth_basic "phpMyAdmin - HTTP Basic Login";
auth_basic_user_file /etc/nginx/pma_pass;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}