Introduzione
Nginx Server Blocks consente di eseguire più di un sito Web su un singolo computer. Con Server Blocks è possibile specificare la radice 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.
In questo articolo, forniremo istruzioni dettagliate su come configurare un server block di Nginx su Ubuntu 18.04.
Per una guida su come configurare Server Block multipli con Nginx su Ubuntu 18.04, leggere questo tutorial.
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.
In alcuni tutorial potresti vedere Server Blocks
essere indicato come a Virtual host
. Il termine host virtuale è generalmente utilizzato per Apache.
Installare Nginx
Il pacchetto Nginx è incluso nei repository Ubuntu 18.04 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
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 Ubuntu, 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 Ubuntu. 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 Ubuntu 18.04 LTS.