Configurazione degli host virtuali
1. Cosa sono gli host virtuali?
Immagina di aprire un caffè accogliente. La maggior parte dei clienti arriva per il caffè ☕, ma a volte qualcuno ordina il tè 🍵. Invece di aprire un locale separato per gli amanti del tè, hai semplicemente dedicato un piccolo angolo per loro. Nel mondo dei web server, questo concetto si chiama host virtuali. Consentono al tuo server di gestire più siti (con domini diversi) mantenendo un unico server fisico.
Tipi di host virtuali
- Basati su indirizzi IP — ogni sito ottiene un indirizzo IP unico. È come una zona VIP a un concerto: ogni cliente con un biglietto VIP ottiene il suo posto.
- Basati su nomi di dominio — più siti possono condividere un unico indirizzo IP. Qui il server utilizza il nome dell'host (nome di dominio) dalla richiesta del client per capire quale sito mostrare. Questa è l'opzione più diffusa e conveniente per la maggior parte dei progetti.
2. Configurazione di un virtual host in Nginx
1. Creazione di un nuovo virtual host
Per configurare un virtual host, prima di tutto, dobbiamo creare un file di configurazione. Questo file conterrà informazioni su come il server dovrebbe elaborare le richieste per un determinato dominio.
Creiamo un file per il nostro sito, ad esempio example.com
:
sudo nano /etc/nginx/sites-available/example.com
Aggiungiamo il seguente blocco di configurazione:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Vediamo il codice in dettaglio:
listen 80;
: Specifica che il server ascolterà sulla porta 80 (utilizzata di default per HTTP).server_name example.com www.example.com;
: Definisce i nomi di dominio a cui il server deve rispondere.root /var/www/example.com;
: La direttiva specifica la cartella radice dove si trovano i file del sito.index index.html;
: Indica il file che verrà utilizzato come "pagina principale" del sito.location / { try_files $uri $uri/ =404; }
: Configura il routing delle richieste. Se il file o la directory non vengono trovati, restituisce un errore 404.
2. Attivazione della configurazione
Ora dobbiamo "attivare" il nostro virtual host. In Nginx si fa tramite link simbolici:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Dopodiché controlliamo che non ci siano errori nella configurazione:
sudo nginx -t
Se tutto è a posto, riavviamo il server:
sudo systemctl reload nginx
3. Controllo del funzionamento
Creiamo una cartella per i file del sito:
sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html
Aggiungiamo il seguente semplice codice HTML:
<h1>Benvenuto su example.com!</h1>
<p>Il tuo server Nginx è pronto a servire.</p>
Salviamo il file, poi lo apriamo nel browser: http://example.com
. Se vediamo il messaggio di benvenuto, significa che il virtual host funziona!
4. Link simbolici in Linux
I link simbolici (o soft links, symlinks) sono oggetti di file speciali che puntano a un altro file o directory. Funzionano come "collegamenti" in Windows, consentendo l'accesso al file o alla cartella di destinazione tramite un percorso alternativo.
I link simbolici contengono il percorso dell'oggetto originale, non l'oggetto stesso. Se il file o la cartella originale vengono spostati o eliminati, il link diventa "rotto" perché non punta più a un oggetto esistente.
Comando per creare un link simbolico:
ln -s target link_name
target
— percorso dell'oggetto originale.link_name
— nome del link.
Esempio:
ln -s /var/log/syslog log_link
Ora tramite log_link
possiamo accedere al file /var/log/syslog
.
Utilizzo:
- Semplificazione della navigazione.
- Creazione di punti di accesso alternativi ai file.
- Organizzazione delle directory.
3. Configurazione dell'host virtuale in Apache
1. Creazione del file di configurazione
Apache utilizza un approccio diverso. Qui le configurazioni per gli host virtuali si trovano nella cartella /etc/apache2/sites-available/
. Creiamo un file per il nostro sito:
sudo nano /etc/apache2/sites-available/example.com.conf
Aggiungiamo il seguente codice:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Spiegazione breve:
<VirtualHost *:80>
: Indica che la configurazione si applica a tutte le richieste sulla porta 80.ServerName
eServerAlias
: Definiscono il nome del dominio principale e gli alias aggiuntivi per il sito.DocumentRoot
: Specifica la cartella radice del sito.<Directory>
: Blocco che definisce i diritti di accesso e il comportamento per la directory indicata.
2. Attivazione della configurazione
Per attivare la configurazione, usiamo il comando:
sudo a2ensite example.com.conf
Riavviamo il server affinché le modifiche abbiano effetto:
sudo systemctl restart apache2
3. Verifica del funzionamento
Di nuovo, creiamo una cartella e un file per il sito:
sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html
Inseriamo il contenuto:
<h1>Benvenuto su example.com su Apache!</h1>
Salviamo e apriamo nel browser: http://example.com
. Se vedi la pagina di benvenuto – congratulazioni, hai configurato un host virtuale in Apache!
4. Verifica e gestione di più host
Configurare un secondo host virtuale
Supponiamo che tu voglia gestire un secondo sito: test.com
. Il processo è lo stesso:
- Crei un nuovo file di configurazione.
- Specifichi un nome di dominio unico e la cartella root.
- Attivi la configurazione e riavvii il server.
Per Nginx:
sudo nano /etc/nginx/sites-available/test.com
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx
Per Apache:
sudo nano /etc/apache2/sites-available/test.com.conf
sudo a2ensite test.com.conf
sudo systemctl restart apache2
Debug dei problemi
Se i tuoi host virtuali non funzionano, inizia verificando gli errori. Ad esempio:
Per Nginx:
sudo tail -f /var/log/nginx/error.log
Per Apache:
sudo tail -f /var/log/apache2/error.log
Poi puoi utilizzare il comando curl
per testare direttamente il sito:
curl -I http://example.com
Ora sei in grado di configurare host virtuali e gestire più siti su un unico server. In parallelo, è importante configurare HTTPS per rendere i tuoi siti sicuri. Ma questo sarà argomento della prossima lezione!
GO TO FULL VERSION