Htpasswd qui me demande de authentifier en boucle

Bonjour à toutes et à tous.
Pour restreindre l’accès à un répertoire sous Nginx, j’ai fait :
sudo htpasswd -c /var/www/html/joomla/administrator/.htpasswd IDENTIFIANT
​J’ai utilisé un mot de passe de 64 caractères avec minuscules, majuscules, chiffres, caractères spéciaux et ASCII étendu.
J’ai ajouté ça au fichier de config de Nginx :

location ^~ /administrator {
        try_files $uri $uri/ =404;
        fastcgi_pass   unix:/run/php/php8.2-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
        auth_basic "Restricted Content";
        auth_basic_user_file /var/www/html/joomla/administrator/.htpasswd;
    }

Et ça me met 403 Forbidden
Une personne pouvait-elle m’aider ?
Merci par avance.

Déplace ton fichier htpasswd ailleurs et appelle le avec le bon path.^
C’est exactement le même problème lorsque l’on mets en place un htpasswd avec un htaccess sous apache.

PS : il (le htpasswd)) doit-etre accessible par l’utilisateur utilisé par ton nginx.

Bonjour Clochette.
Ça me demande l’authentification en boucle.
Le code est le suivant :

#    location ^~ /administrator {
#        try_files $uri $uri/ =404;
#        fastcgi_pass   unix:/run/php/php8.2-fpm.sock;
#        fastcgi_index  index.php;
#        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
#        include        fastcgi_params;
#        auth_basic "Restricted Content";
#        auth_basic_user_file /var/www/.htpasswd;
#    }

Si je mets le fichier avec l’utilisateur de nginx tout le monde pourra le lire ?

Bien entendu Nginx doit pouvoir le lire, mais forcément il doit pas être dans le répertoire Web (ça me paraissait évident) :wink:

En exemple :

sudo  htpasswd -c /etc/nginx/.htpasswdd IDENTIFIANT

et dans la conf defaut tu aura ton bloc d’authentification :

server {
    listen 80 default_server;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

Te reste juste à adapter pour la partie fpm

Merci Clochette.
J’appliquerai cela demain, car aujourd’hui, j’en ai déjà trop fait, j’ai le cerveau qui fume.
À demain pour te dire ce qu’il en est.

Bonjour, clochette.
Hormis ta première ligne de code qui est fausse :
un htpasswp -c en trop et un « d » en trop sur .htpasswd
De plus, je ne veux pas un contrôle d’accès sur tout le site, mais sur le répertoire administrator et son contenu.
La demande de mot de passe tourne toujours en boucle, donc je suis au point mort.

Mon code dans mon fichier de config nginx :

root /var/www/html/joomla;

if ($bad_referer) {
return 403;
}


location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$args;
autoindex off;
}

location /administrator/ {
    try_files $uri $uri/ =404;
    auth_basic "Zone securisee - Autentification requise";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Bon, la méthode htpasswd ne fonctionne pas car tous les répertoires ont l’UID et GID root.
Ce qui est rigolo, c’est qu’il m’est impossible de changer cela.
Pourtant le site fonctionne très bien ce qui ne devrait pas être possible avec l’UID et GID en root.
Donc je passe à un autre sujet.