Nginx · 3 min read · Jan 24, 2026

Autenticazione HTTP di Base Con Nginx

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

Non rilascio alcuna garanzia che questo funzioni per te!

1 Nota Preliminare

Sto usando il sito web www.example.com qui con la radice del documento /var/www/www.example.com/web/ e il file di configurazione vhost di Nginx /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 Di Password

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

2.1 Utilizzando il Comando htpasswd di Apache

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

which htpasswd
root@server1:~# which htpasswd  
/usr/bin/htpasswd  
root@server1:~#

Se ottieni un output come quello sopra, tutto va bene - htpasswd è già installato. Se il comando restituisce 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 install apache2-utils

Voglio creare il file di password /var/www/www.example.com/.htpasswd ora e memorizzare l’utente falko in esso (puoi dare al file di password qualsiasi nome tu voglia - non è necessario chiamarlo .htpasswd; l’ho semplicemente chiamato .htpasswd perché è così che vengono chiamati i file di password sotto Apache):

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

Ti verrà chiesto di inserire una password per l’utente falko. Si prega di notare che l’opzione -c fa sì 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 desideri aggiungere un altro utente senza eliminare tutti gli utenti esistenti, utilizza il comando htpasswd senza l’opzione -c:

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

L’ultimo comando aggiunge l’utente till a /var/www/www.example.com/.htpasswd in modo che ora abbiamo gli utenti falko e till in esso.

2.2 Utilizzando Lo Script Python htpasswd.py

Se non vuoi o non puoi utilizzare il comando htpasswd di Apache, puoi utilizzare 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/10791/trunk/contrib/htpasswd.py  
chmod 755 /usr/local/bin/htpasswd.py

Voglio creare il file di password /var/www/www.example.com/.htpasswd ora e memorizzare l’utente falko in esso (puoi dare al file di password qualsiasi nome tu voglia - non è necessario chiamarlo .htpasswd; l’ho semplicemente chiamato .htpasswd perché è così che vengono chiamati i file di password sotto Apache):

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

Si prega di sostituire falkossecret con una password per l’utente falko. Si prega di notare che l’opzione -c fa sì 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 desideri aggiungere un altro utente senza eliminare tutti gli utenti esistenti, utilizza 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 till a /var/www/www.example.com/.htpasswd in modo che ora abbiamo gli utenti falko e till in esso.

3 Configurazione Di Nginx

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

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

Poiché voglio proteggere con password la directory di test nella radice del documento, utilizzo location /test {} qui (per proteggere con password l’intero sito web, utilizzeresti location / {}):

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

Ricarica Nginx dopo:

/etc/init.d/nginx reload

Questo è tutto! Puoi ora andare alla tua directory di test in un browser ( http://www.example.com/test), e ti verrà chiesto un nome utente e una password:

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

Altrimenti vedrai un messaggio di errore 401 Authorization Required:

4 Link

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 core developer di ISPConfig (dal 2000). Ha anche contribuito al libro di O’Reilly “Linux System Administration”.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.