Introduzione

Se il vostro intento è configurare una password di accesso per Nginx su di un server Debian 10 in remoto continuate a leggere, altrimenti se volete configurare una password per Nginx sul vostro computer locale saltate il primo paragrafo "Connessione al Server" e leggere il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Siete ora connessi al vostro server, siete pronti per iniziare la configurazione di Nginx.

Prerequisiti

Installa Nginx sul tuo server digitando da console:

sudo apt-get update
sudo apt-get install nginx

Creare il file password

Per iniziare, dobbiamo creare il file che conterrà i nostri dati di accesso: username e password. È possibile farlo utilizzando il tool OpenSSL che potrebbe già essere disponibile sul server. In alternativa, è possibile utilizzare il tool htpasswd incluso nel pacchetto.

Creare il file password utilizzando OpenSSL

Se hai OpenSSL installato sul tuo server, puoi creare un file password senza pacchetti aggiuntivi. Creeremo un file nascosto chiamato .htpasswd nella directory di configurazione /etc/nginx per memorizzare i nostri dati di accesso: username e password.

È possibile aggiungere un nome utente al file utilizzando questo comando. Usiamo grok come nostro nome utente, ma puoi usare qualsiasi nome desideri:

sudo sh -c "echo -n 'grok:' >> /etc/nginx/.htpasswd"

Successivamente, aggiungi la voce password crittografata per il nome utente scelto digitando:

sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

Puoi ripetere questo processo per ulteriori utenti. Puoi vedere come gli utenti e le password crittografate sono memorizzati nel file digitando:

cat /etc/nginx/.htpasswd
Output
grok:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

Creare il file password utilizzando il tool di Apache

In alternativa a OpenSSL per crittografare le password per l'autenticazione di Nginx, è possibile utilizzare il tool htpasswd, che si trova nel pacchetto apache2-utils.

Per installare il pacchetto apache2-utils sul tuo server digita da console:

sudo apt-get update
sudo apt-get install apache2-utils

Ora hai accesso al comando htpasswd. Possiamo usarlo per creare un file password che Nginx può utilizzare per autenticare gli utenti. Creeremo un file nascosto per questo scopo chiamato .htpasswd all'interno della nostra directory di configurazione /etc/nginx.

La prima volta che usiamo questa utility, dobbiamo aggiungere l'opzione -c per creare il file specificato. Per questo esempio possiamo utilizzare lo stesso nome utente utilizzando precedentemente "grok" alla fine del comando per creare una nuova voce all'interno del file:

sudo htpasswd -c /etc/nginx/.htpasswd grok

Ti verrà chiesto di fornire e confermare una password per l'utente.

Se si desidera aggiungere altri utenti, non utilizzare nuovamente il parametro -c, per esempio:

sudo htpasswd /etc/nginx/.htpasswd nuovo_utente

Possiamo vedere il nome utente e la password crittografata per ogni record:

cat /etc/nginx/.htpasswd
Output
grok:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
nuovo_utente:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

Configurare Nginx con la password di autenticazione

Ora che abbiamo un file con i nostri utenti e password in un formato che Nginx può leggere, dobbiamo configurare Nginx per leggere questo file.

Inizia aprendo il file di configurazione del blocco del server a cui desideri aggiungere una restrizione. Per il nostro esempio, utilizzeremo il file di blocco del server predefinito installato tramite il pacchetto Nginx di Debian:

Da console:

sudo nano /etc/nginx/sites-enabled/default

Cercare il seguente blocco:

...
    location / {
        try_files $uri $uri/ =404;
    }
...

Aggiungere le seguenti voci:

auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;

Il risultato finale dovrà essere il seguente:

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

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

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

Salvare e chiudere il file.

Riavviare Nginx:

sudo service nginx restart

La directory che hai specificato dovrebbe ora essere protetta da password.

Collegarsi al proprio indirizzo IP pubblico oppure in localhost:

http://localhost/

Dovresti ricevere una richiesta di inserimento di username e password.

La configurazione di Nginx con password di autenticazione su Debian 10 è terminata.