GNU/Linux >> Linux Esercitazione >  >> Linux

Autenticazione HTTP di base con Nginx

Questo tutorial mostra come utilizzare l'autenticazione HTTP di base con Nginx per proteggere con password le directory sul tuo server o anche su un intero sito web. Questo è l'equivalente Nginx dell'autenticazione HTTP di base su Apache con .htaccess /.htpasswd.

1 Nota preliminare

Sto utilizzando il sito Web www.example.com qui con la radice del documento /var/www/www.example.com/web/ e il file di configurazione di Nginx vhost /etc/nginx/sites-enabled/www.example.com. vhost. La directory che voglio proteggere con password è /var/www/www.example.com/web/test/.

2 Creazione del file password

Abbiamo bisogno di un file di password in cui gli utenti che dovrebbero essere in grado di accedere siano elencati con le loro password (in forma crittografata). Per creare un tale file di password, possiamo utilizzare lo strumento htpasswd di Apache o lo script Python da http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py.

2.1 Utilizzo del comando htpasswd di Apache

Se vuoi usare il comando htpasswd di Apache, controlla se esiste sul tuo sistema:

which htpasswd
[email protected]:~# which htpasswd
/usr/bin/htpasswd
[email protected]:~#

Se ottieni un output come quello sopra, va tutto bene - htpasswd è già installato. Se il comando ritorna senza alcun output, htpasswd non esiste sul tuo sistema e devi installarlo. Su Debian/Ubuntu, fa parte del pacchetto apache2-utils che possiamo installare come segue:

apt-get -y install apache2-utils

Voglio creare ora il file della password /var/www/www.example.com/.htpasswd e memorizzarvi l'utente falko (puoi dare al file della password qualsiasi nome tu voglia - non è necessario nominarlo .htpasswd; io l'ho appena chiamato .htpasswd perché questo è il modo in cui i file delle password sono denominati in Apache):

htpasswd -c /var/www/www.example.com/.htpasswd falko

Ti verrà richiesta una password per l'utente falko. Si noti che l'opzione -c fa in modo che il file venga creato da zero; se non esisteva prima, verrà creato; se esisteva prima, verrà sovrascritto con uno nuovo e tutti gli utenti del vecchio file andranno persi! Pertanto, se vuoi aggiungere un altro utente senza eliminare tutti gli utenti esistenti, usa il comando htpasswd senza l'opzione -c:

htpasswd /var/www/www.example.com/.htpasswd till

L'ultimo comando aggiunge l'utente fino a /var/www/www.example.com/.htpasswd in modo che ora ci siano gli utenti falko e till al suo interno.

2.2 Utilizzo dello script Python htpasswd.py

Se non vuoi o non puoi usare il comando htpasswd di Apache, puoi usare lo script Python da http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py.

Lo scarichiamo in /usr/local/bin e lo rendiamo eseguibile come segue:

cd /usr/local/bin
wget http://trac.edgewall.org/export/14464/trunk/contrib/htpasswd.py
chmod 755 /usr/local/bin/htpasswd.py

Voglio creare ora il file della password /var/www/www.example.com/.htpasswd e memorizzarvi l'utente falko (puoi dare al file della password qualsiasi nome tu voglia - non è necessario nominarlo .htpasswd; io l'ho appena chiamato .htpasswd perché questo è il modo in cui i file delle password sono denominati in Apache):

htpasswd.py -c -b /var/www/www.example.com/.htpasswd falko falkossecret

Sostituisci falkossecret con una password per l'utente falko. Si noti che l'opzione -c fa in modo che il file venga creato da zero; se non esisteva prima, verrà creato; se esisteva prima, verrà sovrascritto con uno nuovo e tutti gli utenti del vecchio file andranno persi! Pertanto, se vuoi aggiungere un altro utente senza eliminare tutti gli utenti esistenti, usa il comando htpasswd.py senza l'opzione -c:

htpasswd.py -b /var/www/www.example.com/.htpasswd till tillssecret

L'ultimo comando aggiunge l'utente fino a /var/www/www.example.com/.htpasswd in modo che ora ci siano gli utenti falko e till al suo interno.

3 Configurazione di Nginx

Ora che abbiamo il nostro file di password a posto, dobbiamo solo aggiungerlo alla nostra configurazione di Nginx vhost in /etc/nginx/sites-enabled/www.example.com.vhost, all'interno del server {} container.

nano /etc/nginx/sites-enabled/www.example.com.vhost

Poiché voglio proteggere con password la directory di test nella root del documento, utilizzo la posizione /test {} qui (per proteggere con password l'intero sito Web, dovresti usare location / {}):

server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/www.example.com/web;
[...]
       location /test {
                auth_basic "Restricted";
                auth_basic_user_file /var/www/www.example.com/.htpasswd;
       }
[...]
}

Ricarica Nginx in seguito:

service nginx reload

Questo è tutto! Ora puoi accedere alla directory di test in un browser (http://www.example.com/test) e ti dovrebbero essere richiesti un nome utente e una password:

Se inserisci il nome utente e la password corretti, ti verrà concesso l'accesso:

In caso contrario, verrà visualizzato un messaggio di errore 401 Autorizzazione richiesta:

  • Nginx:http://nginx.org/
  • Nginx Wiki:http://wiki.nginx.org/
  • Script Python htpasswd.py:http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py

Informazioni sull'autore

Falko Timme è il proprietario di Timme Hosting (hosting web nginx ultra veloce). È il principale manutentore di HowtoForge (dal 2005) e uno dei principali sviluppatori di ISPConfig (dal 2000). Ha anche contribuito al libro di O'Reilly "Linux System Administration".


Linux
  1. Come installare HTTP Git Server con Nginx su Ubuntu 20.04

  2. Come installare HTTP Git Server con Nginx su Debian 11

  3. Reindirizzamento da HTTP a HTTPS in NginX

  4. Autenticazione HTTP con Axel Downloader?

  5. Permessi dei file in Linux con esempio

Come installare TYPO3 8.1 con Nginx (LEMP) su Ubuntu 16.04

Come utilizzare GeoIP con Nginx su Ubuntu 16.04

Correzione di HTTP Basic:accesso negato e errore di autenticazione irreversibile con GitLab

Come configurare PHP-FPM con NGINX

Installa WordPress con Nginx su Ubuntu 18.04

Come configurare Nginx con supporto HTTP/2 su Ubuntu 18.04