Ricerca nel sito web

Come proteggere con password le directory Web in Nginx


I gestori di progetti web spesso hanno bisogno di proteggere il proprio lavoro in un modo o nell'altro. Spesso le persone chiedono come proteggere con password il proprio sito web mentre è ancora in fase di sviluppo.

In questo tutorial, ti mostreremo una tecnica semplice ma efficace su come directory web protetta da password quando si esegue Nginx come server web.

Se utilizzi il server web Apache, puoi consultare la nostra guida per proteggere con password una directory web:

  1. Proteggi con password le directory Web in Apache

Requisiti

Per completare i passaggi di questo tutorial, dovrai avere:

  • Server Web Nginx installato
  • Accesso root al server

Passaggio 1: crea utente e password

1. Per proteggere con password la nostra directory web, dovremo creare il file che conterrà il nostro nome utente e la password crittografati.

Quando utilizzi Apache, puoi utilizzare l'utilità "htpasswd". Se hai installato questa utility sul tuo sistema, puoi utilizzare questo comando per generare il file della password:

htpasswd -c /path/to/file/.htpasswd username

Quando esegui questo comando, ti verrà chiesto di impostare una password per l'utente sopra indicato e successivamente il file .htpasswd verrà creato nella directory specificata.

2. Se non hai installato questo strumento, puoi creare manualmente il file .htpasswd. Il file dovrebbe avere la seguente sintassi:

username:encrypted-password:comment

Il nome utente che utilizzerai dipende da te, scegli quello che preferisci.

La parte più importante è il modo in cui genererai la password per quell'utente.

Passaggio 2: genera password crittografata

3. Per generare la password, utilizza la funzione "crypt" integrata di Perl.

Ecco un esempio di quel comando:

perl -le 'print crypt("your-password", "salt-hash")'

Un esempio di vita reale:

perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'

Ora apri un file e inserisci il tuo nome utente e il file generato in una stringa, separati da punto e virgola.

Ecco come:

vi /home/tecmint/.htpasswd

Inserisci il tuo nome utente e password. Nel mio caso assomiglia a questo:

tecmint:1xV2Rdw7Q6MK.

Salva il file premendo "Esc" seguito da ":wq".

Passaggio 3: aggiorna la configurazione di Nginx

4. Ora apri e modifica il file di configurazione Nginx associato al sito su cui stai lavorando. Nel nostro caso utilizzeremo il file predefinito in:

vi /etc/nginx/conf.d/default.conf       [For CentOS based systems]
OR
vi /etc/nginx/nginx.conf                [For CentOS based systems]


vi /etc/nginx/sites-enabled/default     [For Debian based systems]

Nel nostro esempio, proteggeremo con password la radice della directory per nginx, che è: /usr/share/nginx/html.

5. Ora aggiungi la seguente sezione di due righe sotto il percorso che desideri proteggere.

auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;

Ora salva il file e riavvia Nginx con:

systemctl restart nginx
OR
service nginx restart

6. Ora copia/incolla l'indirizzo IP nel browser e ti verrà chiesta la password:

Questo è tutto! La tua directory web principale è ora protetta. Quando desideri rimuovere la protezione tramite password sul sito, rimuovi semplicemente le due righe che hai appena aggiunto al file .htpasswd o utilizza il seguente comando per rimuovere l'utente aggiunto da un file di password.

htpasswd -D /path/to/file/.htpasswd username