Come creare un host virtuale Nginx (blocco server)
I blocchi server, spesso chiamati host virtuali in Nginx, consentono di ospitare più siti Web su un singolo server. Ecco come usarli!
Nginx è progettato per gestire più domini su un singolo server e indirizzo IP. In altre parole, se disponi di un server che viene utilizzato come server web e a cui è assegnato un solo indirizzo IP, devi utilizzare gli host virtuali Nginx per avere più di un sito Web o dominio in esecuzione sul server.
Prima di iniziare questo tutorial, dovrai installare Nginx. Per sapere come installarlo, leggi la nostra eccellente guida sull'installazione del server Web Nginx su Linux.
Cos'è un host virtuale?
Lascia che ti spieghi se non sei sicuro di cosa sia un host virtuale. È un termine del server HTTP Apache; tuttavia, è comunemente utilizzato anche dagli utenti Nginx. Il termine corretto per Nginx è blocco del server.
Correlato: Apache vs. Nginx: quale server Web scegliere
In breve, un host virtuale è un metodo per ospitare più nomi di dominio su un singolo server.
Come funziona l'host virtuale?
Quando avvii un software per server web come Nginx su un server, quel server web si collegherà a una o più porte di rete. Di solito, per un server web, saranno le porte 80 e 443.
Quando un computer visita un sito Web, invierà una richiesta tramite Internet al server e il server riceverà tale richiesta. Ma prima il server esaminerà la porta di destinazione a cui è stata inviata la richiesta.
Successivamente, utilizzerà la porta di destinazione per determinare l'applicazione a cui inoltrare tali informazioni. Ciò significa che il tuo server web può avere solo un'applicazione che riceve le richieste.
Ma cosa succede se desideri eseguire due siti Web sullo stesso server? Quando viene ricevuto un pacchetto che richiede un sito Web, il server deve determinare quale sito Web viene richiesto prima di decidere quali informazioni restituire.
È essenziale comprendere che, indipendentemente dal sito Web richiesto, il server non è in grado di identificare a quale sito Web un client sta tentando di accedere in base al numero di porta e alla porta di destinazione.
Quindi tutto ciò che il server farà è dire “Sto inviando questa richiesta a Nginx”. Da lì, Nginx deve decidere cosa restituire.
È qui che entrano in gioco i blocchi del server. Possono essere utilizzati per servire altri siti web in base all'indirizzo IP richiesto o per servire diversi siti web in base al nome di dominio utilizzato.
Pertanto, quando digiti il nome di un sito web, come www.example.com
, e il server lo riceve, Nginx esaminerà le intestazioni HTTP per vedere quale nome del server è stato richiesto.
Quindi, in base agli host virtuali configurati, il server determina in quale directory sono archiviati i file del sito Web e fornisce la risposta corretta al client in base al nome del server.
Come creare host virtuali Nginx (blocchi server)
Possiamo creare e archiviare i file di configurazione del nostro host virtuale in due directory. Entrambi si trovano nella directory /etc/nginx
. I nomi di queste due directory sono sites-available
e sites-enabled
.
/etc/nginx/sites-available
: la directory in cui sono definiti i singoli host virtuali (siti Web). Ricorda che Nginx non utilizzerà i file di configurazione in questa directory a meno che non siano collegati alla directory/etc/nginx/sites-enabled
./etc/nginx/sites-enabled
: elenco degli host virtuali (siti Web) attivamente serviti da Nginx.
Ti chiedi perché abbiamo bisogno di due directory per archiviare i nostri file host virtuali? La risposta è che in questo modo possiamo creare molti file host virtuali sul nostro server Nginx, ma possiamo abilitarli in base alle nostre esigenze.
Per questa guida, creeremo file host virtuali nel nostro server Nginx per ospitare più siti con più domini. I nomi di dominio sono sitoweb1.com e sitoweb2.com.
1. Creazione della struttura di directory
Innanzitutto, dobbiamo creare una directory per ciascun host virtuale per archiviare i diversi contenuti del sito web. Inseriremo queste directory in /var/www
e le chiameremo dopo ciascun nome di dominio.
Eseguire i seguenti comandi per creare le directory:
sudo mkdir -p /var/www/website1.com
sudo mkdir -p /var/www/website2.com
Il flag -p
nel comando precedente indica a mkdir
di creare tutte le directory principali necessarie.
2. Creazione di pagine di prova per ciascun sito web
Successivamente, a scopo dimostrativo, creiamo un file index.html
all'interno della directory root dei documenti del dominio in modo da avere qualcosa da visualizzare.
sudo vim /var/www/website1.com/index.html
Incolla le seguenti righe:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to Website 1!</title>
</head>
<body>
<h1>Welcome to Website 1!</h1>
</body>
</html>
Ora ripeti il passaggio precedente per website2.com.
sudo vim /var/www/website2.com/index.html
Incolla le seguenti righe:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to Website 2!</title>
</head>
<body>
<h1>Welcome to Website 2!</h1>
</body>
</html>
3. Creare host virtuale Nginx (blocchi server)
Per creare un file host virtuale Nginx all'interno della directory sites-available
, esegui il seguente comando:
sudo vim /etc/nginx/sites-available/website1.com
Vale la pena notare che il file di configurazione dell'host virtuale Nginx può essere nominato come preferisci, ma generalmente è una buona idea utilizzare il nome di dominio.
Ora incolla il seguente contenuto nel file host virtuale:
server {
listen 80;
server_name website1.com www.website1.com;
root /var/www/website1.com;
access_log /var/log/nginx/website1-access.log;
error_log /var/log/nginx/website1-error.log;
}
Per rendere le cose più trasparenti, analizziamo questa sintassi. Innanzitutto, ecco cosa significa ciascun parametro:
listen
server_name
root
error_log
access_log
: Specificare su quale porta il server Nginx resta in ascolto delle connessioni.
: Qui, abbiniamo le richieste per il nostro dominio. La direttiva contiene un elenco di nomi di dominio che vogliamo utilizzare per accedere al nostro sito.
: la posizione della directory in cui abbiamo archiviato i file del nostro sito web.
: percorso completo del file di registro in cui memorizziamo i registri degli errori di questo host virtuale.
: percorso completo del file di registro in cui memorizziamo i registri di accesso di questo host virtuale.
Ora possiamo utilizzare la configurazione iniziale dell'host virtuale come base per il nostro secondo file. Basta copiarlo per creare un nuovo file:
sudo cp /etc/nginx/sites-available/website1.com /etc/nginx/sites-available/website2.com
Apri il nuovo file e modificalo in modo che corrisponda al nostro secondo nome di dominio (website2.com
):
sudo vim /etc/nginx/sites-available/website2.com
server {
listen 80;
server_name website2.com www.website2.com;
root /var/www/website2.com;
access_log /var/log/nginx/website2-access.log;
error_log /var/log/nginx/website2-error.log;
}
4. Abilita gli host virtuali Nginx (blocchi server)
L'ultima cosa che dobbiamo fare prima di eseguire il test abilita gli host virtuali. Possiamo farlo creando un collegamento simbolico dal file alla directory sites-enabled
:
sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/
Come puoi vedere dall'immagine qui sotto, questi file sono ora collegati alla directory sites-enabled
.
Prima di andare avanti, controlliamo che non ci siano errori di battitura. Testa la configurazione di Nginx per la sintassi corretta:
sudo nginx -t
Infine, se non vengono rilevati problemi, riavvia il servizio Nginx per applicare le modifiche:
sudo systemctl restart nginx
5. Testare gli host virtuali (facoltativo)
Per testare gli host virtuali Nginx, dobbiamo prima indirizzare i record dei nostri nomi di dominio all'indirizzo IP del server. Nel nostro caso, l'indirizzo IP del server è 192.168.122.101
.
Se utilizzi Linux, apri il file /etc/hosts
sul tuo PC desktop (quello da cui eseguirai il test) utilizzando il comando seguente:
sudo vim /etc/hosts
E aggiungi i nomi di dominio virtuale uno per uno, come mostrato di seguito.
Salva e chiudi il file quando hai finito. In questo modo ci consentirà di testare domini che non possediamo.
Ora apri il browser e inserisci www.website1.com
e www.website2.com
uno per uno. Vedrai rispettivamente le pagine indice di entrambi i domini.
Hai configurato con successo due domini indipendenti con Nginx.
6. Disabilita gli host virtuali Nginx (blocchi server)
Per disabilitare un host virtuale in Nginx, dobbiamo rimuovere il collegamento simbolico che avevamo creato abilitando il file host virtuale. Ad esempio, per disabilitare website2.com
, dobbiamo eseguire il seguente comando:
sudo rm -rf /etc/nginx/sites-enabled/website2.com
Per applicare le modifiche, dobbiamo riavviare il server Nginx:
sudo systemctl restart nginx
Conclusione
Questo articolo mostra come creare host virtuali Nginx (blocchi server) e ospitare più domini su un singolo server Linux. Per creare un host virtuale per un altro dominio, ripeti gli stessi passaggi. Ma ovviamente Nginx può fare molto di più.
Correlato: Come configurare Nginx per funzionare con PHP tramite PHP-FPM
Inoltre, se vuoi sapere come proteggere il tuo sito web con un certificato SSL gratuito, ti consiglio di consultare la nostra guida "Come utilizzare Certbot per ottenere un certificato SSL Let's Encrypt gratuito".
Puoi fare riferimento alla documentazione ufficiale di Nginx per ulteriori informazioni sulla configurazione di un server Nginx.
Grazie per aver letto! Spero che tu abbia trovato utile l'articolo e che tu sia riuscito a configurare gli host virtuali. Sentiti libero di lasciare un commento se hai domande.