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:
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
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
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?
GO TO FULL VERSION