CodeGym /Corsi /Docker SELF /Distribuzione di un web server con virtual host e SSL

Distribuzione di un web server con virtual host e SSL

Docker SELF
Livello 7 , Lezione 5
Disponibile

Distribuzione di un web server con virtual host e SSL

1. Preparazione dell'ambiente

Ora è arrivato il momento di mettere tutto insieme. Oggi distribuiamo un server con più host virtuali e colleghiamo HTTPS. Testeremo, faremo debug e configureremo il tutto definitivamente.

Il nostro obiettivo

In questo progetto distribuiremo due siti su un unico server web:

  • example.com
  • test.com

Per ogni sito configureremo un host virtuale, collegheremo HTTPS e mostreremo i passaggi di debug e verifica del funzionamento. Pronto? Andiamo!

Preparazione

Prima di iniziare, assicuriamoci che tutto sia configurato correttamente:

  1. Hai già installato un server web (Nginx o Apache).

    • Se utilizzi Nginx:

      sudo apt-get update
      sudo apt-get install nginx
      
    • Oppure Apache:

      sudo apt-get update
      sudo apt-get install apache2
      
  2. Il pacchetto Certbot per lavorare con SSL è installato.

    • Per Nginx:

      sudo apt-get install certbot python3-certbot-nginx
      
    • Per Apache:

      sudo apt-get install certbot python3-certbot-apache
      
  3. Hai accesso al server dove sono configurati i DNS per i domini example.com e test.com, o puoi utilizzare /etc/hosts per i test.


2. Configurazione della directory per ogni sito

Iniziamo creando le directory e i file per i nostri siti.

Passo 1: Creiamo le cartelle per i siti

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

Passo 2: Creiamo dei file HTML di test

Creiamo un semplice file HTML per ogni sito:

example.com

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

Contenuto:

<!DOCTYPE html>
<html>
<head>
    <title>Benvenuto su example.com</title>
</head>
<body>
    <h1>Questo è example.com</h1>
    <p>Benvenuto su example.com! Il sito è attivo e sicuro con SSL!</p>
</body>
</html>

test.com

sudo nano /var/www/test.com/index.html

Contenuto:

<!DOCTYPE html>
<html>
<head>
    <title>Benvenuto su test.com</title>
</head>
<body>
    <h1>Questo è test.com</h1>
    <p>Benvenuto su test.com! Il sito è funzionante e sicuro con SSL!</p>
</body>
</html>

3. Configurazione dei virtual host

Creeremo un file di configurazione separato per ogni sito web.

Passo 1: Configurazione per Nginx

example.com

sudo nano /etc/nginx/sites-available/example.com

Contenuto:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html;

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

test.com

sudo nano /etc/nginx/sites-available/test.com

Contenuto:

server {
    listen 80;
    server_name test.com www.test.com;

    root /var/www/test.com;
    index index.html;

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

Abilitiamo la configurazione:

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

Riavviamo il server:

sudo nginx -t
sudo systemctl reload nginx

Passo 2: Configurazione per Apache

example.com

sudo nano /etc/apache2/sites-available/example.com.conf

Contenuto:

<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>

test.com

sudo nano /etc/apache2/sites-available/test.com.conf

Contenuto:

<VirtualHost *:80>
    ServerName test.com
    ServerAlias www.test.com

    DocumentRoot /var/www/test.com
    <Directory /var/www/test.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Abilitiamo le configurazioni:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2

4. Configurazione di HTTPS per i siti

Ora collegheremo SSL per entrambi i siti utilizzando Let’s Encrypt.

sudo certbot --nginx
# oppure per Apache:
sudo certbot --apache

Il processo ti chiederà di selezionare per quali siti emettere i certificati. Seleziona example.com e test.com. Certbot aggiornerà automaticamente la configurazione dei server.


5. Verifica del funzionamento dei siti

Dopo aver completato la configurazione, visita i tuoi siti:

Dovresti vedere le pagine HTML create. Assicurati che il browser mostri "Sicuro" (Secure) nella barra degli indirizzi.


6. Debug e verifica

Se qualcosa è andato storto, controlla i log:

  • Per Nginx:

    sudo tail -f /var/log/nginx/error.log
    
  • Per Apache:

    sudo tail -f /var/log/apache2/error.log
    

Oppure controlla l'accessibilità con curl:

curl -I http://example.com
curl -I https://example.com

7. Rinnovo dei certificati

Certbot aggiorna automaticamente i certificati usando il cron di sistema. Per essere sicuri, puoi avviarlo manualmente:

sudo certbot renew --dry-run

Ecco fatto, passo dopo passo abbiamo configurato un web server con supporto per più siti e HTTPS. Hai appena completato tutto il processo, passando da un server vuoto a uno funzionante con virtual host e SSL. Ora il tuo server è pronto per mostrare i suoi siti al mondo. Non è fantastico?

1
Опрос
Lavorare con i web server in Linux,  7 уровень,  5 лекция
недоступен
Lavorare con i web server in Linux
Lavorare con i web server in Linux
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION