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;
}
}