Come installare Nginx Server Blocks (Virtual Hosts) su Debian 10

25 lug 2019 4 min di lettura
Come installare Nginx Server Blocks (Virtual Hosts) su Debian 10
Indice dei contenuti

Introduzione

Nginx Server Blocks consente di eseguire più di un sito Web su un singolo computer. Con Server Blocks è possibile specificare la root del documento del sito (la directory che contiene i file del sito Web), creare una politica di sicurezza separata per ciascun sito, utilizzare certificati SSL diversi per ciascun sito e molto altro.

Per una guida su come configurare Server Block multipli con Nginx su Debian 10, leggere questo tutorial.

In questo articolo, forniremo istruzioni dettagliate su come configurare un server block con Nginx su Debian 10 Buster.

Prerequisiti

Assicurati di aver soddisfatto i seguenti prerequisiti prima di continuare con il tutorial:

  • Hai un nome di dominio che punta all'IP del tuo server pubblico. Useremo example.com.
  • Hai effettuato l'accesso come utente con privilegi sudo.

Se il vostro intento è installare Nginx su di un server in remoto continuate a leggere, altrimenti se volete installare 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 root@IP_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 VOSTRO_UTENTE@IP_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 nome_utente@IP_DEL_SERVER -p PORTA

Siete ora connessi al vostro server, siete pronti per iniziare l'installazione di Nginx.

Installare Nginx

Il pacchetto Nginx è incluso nei repository Debian 10 predefiniti.

sudo apt update
sudo apt install nginx

Il servizio Nginx si avvierà automaticamente al termine del processo di installazione.. Per verificare il tipo di stato:

sudo systemctl status nginx

L'output sarà simile a questo:

 nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-11-18 22:54:20 CET; 9s ago

Configurare il firewall

Supponendo che si stia utilizzando UFW su Debian per gestire il firewall, è necessario aprire le porte HTTP (80) e HTTPS (443). Puoi farlo abilitando il profilo 'Nginx Full' che include le regole per entrambe le porte:

sudo ufw allow 'Nginx Full'

Per verificare il tipo di stato di Nginx:

sudo ufw status

L'output sarà simile al seguente:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

Creare la struttura della directory per il Server Block

La root del documento è la directory in cui i file del sito Web per un nome di dominio vengono archiviati e offerti in risposta alle richieste. È possibile impostare la root del documento in qualsiasi posizione desiderata.

Useremo la seguente struttura di directory:

/var/www/
├── domain1.com
│   └── public_html
├── domain2.com
│   └── public_html
├── domain3.com
│   └── public_html

Fondamentalmente, creeremo una directory separata per ogni dominio che vogliamo ospitare sul nostro server all'interno della directory /var/www. All'interno di ciascuna di queste directory, creeremo una directory public_html che memorizzerà i file del sito Web del dominio.

Creiamo la directory principale per il nostro dominio example.com:

sudo mkdir -p /var/www/example.com/public_html

A scopo di test, creeremo un file index.html all'interno della directory root dei documenti del dominio.

Apri il file/crea il file con il  tuo editor, in questo tutorial useremo nano:

sudo nano /var/www/example.com/public_html/index.html

Incolla le seguenti righe di codice:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to example.com</title>
  </head>
  <body>
    <h1>Success! example.com home page!</h1>
  </body>
</html>

In questo esempio, eseguiamo i comandi come utente sudo e i file e le directory appena creati sono di proprietà dell'utente root.

Per evitare problemi di autorizzazione, modificare la proprietà della directory root del documento di dominio sull'utente Nginx (www-data) con il comando chown:

sudo chown -R www-data: /var/www/example.com

Creare un blocco server

Per impostazione predefinita sui sistemi Debian, i file di configurazione dei blocchi di server Nginx sono memorizzati nella directory /etc/nginx/sites-available, che sono abilitati tramite collegamenti simbolici alla directory /etc/nginx/sites-enabled/.

Apri il tuo editor e crea il seguente file di blocco del server:

sudo nano /etc/nginx/sites-available/example.com
server {
    listen 80;
    listen [::]:80;

    root /var/www/example.com/public_html;

    index index.html;

    server_name example.com www.example.com;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

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

Puoi nominare il file di configurazione come preferisci, ma di solito è meglio usare il nome di dominio.

Per abilitare il nuovo file di blocco del server, creare un collegamento simbolico dal file alla directory sites-enabled, che viene letto da Nginx all'avvio:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Testare la configurazione di Nginx per la sintassi corretta:

sudo nginx -t

Se non ci sono errori, l'output sarà simile al seguente:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Riavvia il servizio Nginx per rendere effettive le modifiche:

sudo systemctl restart nginx

Infine, per verificare che il blocco server funzioni come previsto, apri il tuo indirizzo http://example.com nel browser che preferisci e vedrai il messaggi di esempio che abbiamo creato nel file index.html del nostro Server Block di Nginx.

Conclusione

Hai imparato a creare una configurazione di blocco server Nginx per ospitare un domino su un singolo server Debian. Puoi ripetere i passaggi sopra descritti e creare blocchi server aggiuntivi per tutti i tuoi domini.

Se desideri proteggere il tuo sito Web con un certificato SSL LetsEncrypt gratuito, puoi consultare la seguente guida: Come installare Let's Encrypt per Nginx su Debian 10 Buster.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.