CodeGym /Corsi /Docker SELF /Configurazione degli host virtuali

Configurazione degli host virtuali

Docker SELF
Livello 7 , Lezione 1
Disponibile

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

  1. 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.
  2. 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 e ServerAlias: 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:

  1. Crei un nuovo file di configurazione.
  2. Specifichi un nome di dominio unico e la cartella root.
  3. 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!

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION