2015-12-25 1 views
1

J'ai créé une bibliothèque d'appel de répertoire, qui nécessite une authentification pour accéder. Une fois l'authentification terminée, je voudrais lister tous les fichiers de la bibliothèque pour l'utilisateur. J'ai essayé l'autoindex en vain, et la plupart du matériel que je trouve ne couvre pas si oui ou non l'authentification affectera n'importe quoi.Nginx servir le contenu statique derrière la page authentifiée

J'apprécierais toute aide, merci.

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

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

    # Make site accessible from http://localhost/ 
    server_name localhost; 

    location/{ 
      # First attempt to serve request as file, then as 
      # directory, then fall back to displaying a 404. 
       try_files $uri $uri/ =404; 
      # Uncomment to enable naxsi on this location include 
      # /etc/nginx/naxsi.rules 
    } 

    location /website { 

    } 

    location /library { 
     auth_basic "Restricted"; 
     auth_basic_user_file /etc/nginx/.htpasswd; 
    } 

Répondre

2

Votre bloc location /library imposera l'exigence d'authentification de base et servir les mêmes fichiers statiques dans /usr/share/nginx/html/library à tous les utilisateurs qui peuvent authentifier avec succès. En bref, tous les utilisateurs qui ont réussi l'authentification verront les mêmes fichiers dans votre configuration actuelle.

Pour servir différents fichiers statiques à différents utilisateurs, considèrent que l'authentification de base sera la variable $remote_user (voir docs) que vous pouvez utiliser pour rendre votre configuration dynamique.

Par exemple, si vous vouliez servir un dossier différent pour chaque ID utilisateur (en même /library URL), vous devriez utiliser un bloc comme:

location /library { 
    auth_basic "Restricted"; 
    auth_basic_user_file /etc/nginx/.htpasswd; 
    alias /usr/share/nginx/html/$remote_user/; 
} 

en supposant que vos dossiers sont nommés avec l'ID de vos utilisateurs et situé sur ce chemin.

Si un utilisateur échoue à l'authentification de base, une erreur 403 Forbidden s'affichera, que vous pouvez gérer à l'aide de la directive error_page pour afficher quelque chose de plus utile qu'une simple erreur de base. De même, si un utilisateur peut authentifier avec succès et qu'un dossier correspondant n'existe pas, il verra un 404, que vous pourrez à nouveau gérer avec une directive error_page.