Forum Programmation.web nginx, .htpasswd : demander ou pas le mot de passe

Posté par  . Licence CC By‑SA.
Étiquettes :
3
5
jan.
2022

Bonjour,

j'ai installé nginx sur un raspberry pi avec un écran tactile pour en faire une interface web de type kiosk.

J'aimerai que ces pages web s'affichent sur l'écran du RPi (adresse http://localhost) mais soit aussi accessible du reste du réseau local par l'IP du RPi. Sauf que j'aimerai que l'accès depuis le réseau soit protégé par un mot de passe.

J'ai ajouté un .htpasswd à la racine du site et modifié en conséquence /etc/nginx/sites-available/default avec auth_basic et auth_basic_user_file

Ça fonctionne exactement comme ça le devrait mais pas comme je le voudrais

Comment faire pour que ce mot de passe ne soit pas demandé lors le l'affichage de la page sur l'écran du RPi, donc avec l'adresse http://localhost ?

Merci
Christian

  • # Avec une condition

    Posté par  . Évalué à 3.

    Un truc de ce genre ?

    if ($host != localhost) {
        // activation auth_basic
    }
    
  • # 2 paragraphes, un par serveur/ecoute

    Posté par  . Évalué à 8. Dernière modification le 06 janvier 2022 à 09:58.

    server {
     name = localhost
     auth=off
    }
    
    server {
     name = x.y.z.t # ou son nom de domaine externe
     auth = on
    }

    note que tu peux faire des trucs encore plus sioux en spécifiant quel dossier peut nécessiter une authentification

    des exemples et explications sont dispos ici
    https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/

    tu trouves aussi la combinaison que j'ai adapté :

    le satisfy any fera que l'accès sera autorisé si au moins l'une des conditions est remplie

    donc soit on vient de localhost (127.0.0.1) soit on a un code

       satisfy any;    
    
        allow 127.0.0.1;
        deny  all;
    
        auth_basic           "Administrator’s Area";
        auth_basic_user_file conf/htpasswd;
  • # merci

    Posté par  . Évalué à 1.

    Merci à vous deux pour votre aide.

    Je dois probablement m'y prendre de travers, et je ne doit pas mettre les codes au bon endroit : je n'y arrive pas :-(

    Pas trop grave, tant pis, il me reste la possibilité de jouer sur la session php et demander le mot de passe dans la page web.

    Encore merci et désolé de ne pas être à la hauteur de vos efforts…

    • [^] # Re: merci

      Posté par  . Évalué à 3.

      regarde les exemples

      regarde comment définir plusieurs "hôtes" sur un seul NGINX

      tu verras que tu peux alors avoir

      localhost ou 127.0.0.1 qui va dans un dossier
      et
      monserver.test qui va dans un autre

      ce qui est pratique quand tu n'as qu'une seule machine mais que tu veux gérer plusieurs sites.

      et avec ce meme principe tu peux aussi avoir 2 notes (localhost et monserver.test) qui vont aller au meme endroit, avec des choix d'identification différents

      • [^] # Re: merci

        Posté par  . Évalué à 1.

        Tu as raison, il vaudrait mieux que je m'accroche un peu pour y arriver. C'est tj plaisant d'apprendre et de comprendre.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.