Ajouter un commentaire

Le problème vient du fait que vous avez (je présume), 2 locations dans le fichier de configuration de votre vHost :

  • location /admin pour définir la protection du dossier
  • location  ~ \.php$ pour définir comment traiter les fichiers PHP

Or quand vous accédez à 192.168.0.1/admin/adminer.php, seule la location ~ \.php$ est utilisée surprise 

Je vous invite à visiter cette page http://wiki.whyaskwhy.org/Nginx/Location qui explique l'ordre de traitement des balises locations.

Et du coup, pour votre config, l'exemple ci-dessous me parait pas mal.

Les fichiers PHP sont traités hors et dans la zone /admin. Et le mot de passe est bien demandé quand vous accédez à un fichier PHP dans la zone /admin

server {
    listen 80;
    server_name testadmin.com;

    root   /home/dev/www/test;
    index  index.html index.htm index.php;

    location ^~ /admin {
        try_files $uri $uri/ =404;
        auth_basic "Restricted Content";
        auth_basic_user_file  /usr/share/nginx/html/admin/.htpasswd;

        # pass the PHP scripts to FastCGI server listening on /run/php/php7.0-fpm.sock
        location ~ \.php$ {
            try_files      $uri =404;
            fastcgi_pass   unix:/run/php/php7.0-fpm.sock;
            fastcgi_index  index.php;
            include        fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }
    }

    # pass the PHP scripts to FastCGI server listening on /run/php/php7.0-fpm.sock
    location ~ \.php$ {
       try_files      $uri =404;
       fastcgi_pass   unix:/run/php/php7.0-fpm.sock;
       fastcgi_index  index.php;
       include        fastcgi_params;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   }
}

 

You must have Javascript enabled to use this form.