Ricerca nel sito web

Crea host virtuali Apache basati su nome e IP in Linux


L'hosting virtuale è un concetto in cui più siti Web o domini sono ospitati su un singolo server, per ridurre il sovraccarico delle risorse e i costi di gestione di un'azienda o organizzazione.

Il server web Apache semplifica l'hosting di più siti consentendo agli amministratori di sistema di configurare facilmente host virtuali per ciascun sito web. L'hosting virtuale può essere basato su IP o basato sul nome.

In questo tutorial esploreremo come configurare l'hosting virtuale nelle distribuzioni basate su RHEL come Fedora, CentOS Stream, Rocky Linux e Alma Linux utilizzando host virtuali sia basati su IP che basati su nome in Linux.

I concetti di Hosting Web condiviso e Hosting Web per rivenditori si basano principalmente su questa funzionalità di Apache.

Tipi di hosting virtuale Apache in Linux

Esistono due tipi di hosting virtuale disponibili con Apache.

Hosting virtuale basato sul nome

In questo tipo di hosting è possibile ospitare più domini o siti web su un unico server utilizzando un solo indirizzo IP. In poche parole, tutti i domini condivideranno un unico indirizzo IP. Questo è il tipo di hosting virtuale più semplice da configurare poiché tutto ciò che devi fare è mappare i nomi di dominio sull'indirizzo IP e quindi configurare gli host virtuali Apache per ciascuno dei nomi di dominio.

Hosting virtuale basato su IP

L'hosting virtuale basato su IP è il luogo in cui a ciascun dominio viene assegnato un indirizzo IP univoco. Questi indirizzi IP possono essere collegati al server utilizzando più schede NIC o una singola scheda NIC.

Ambiente di test

  • Sistema operativoFedora 34
  • ApplicazioneServer Web Apache
  • Indirizzo IP192.168.2.105
  • Indirizzo IP192.168.2.106
  • Dominiowww.miodominio1.com
  • Dominiowww.miodominio2.com

Come configurare host virtuali Apache basati su IP e basati sul nome

Prima di iniziare, assicurati che il server web Apache sia installato sul tuo sistema utilizzando il comando dnf come mostrato.

sudo dnf install httpd -y

Configura hosting virtuale basato sul nome

Il primo passo nella configurazione dell'hosting virtuale basato sul nome è impostare la risoluzione del nome di dominio nel file /etc/hosts. Pertanto, esegui i seguenti comandi come utente root per aggiungere le voci del nome di dominio che puntano all'indirizzo IP dell'host.

echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.105 www.mydomain2.com' >> /etc/hosts

Il passaggio successivo è creare una directory che conterrà i file del sito Web. Pertanto, creeremo due directory per gli host virtuali nella Document Root che è la cartella /var/www/html nella configurazione di Apache.

sudo mkdir /var/www/html/mydomain1.com/
sudo mkdir /var/www/html/mydomain2.com/

Il passaggio successivo consiste nel modificare il file host virtuale che ordinerà ad Apache l'IP di restare in ascolto per le richieste in arrivo del server Web Apache per tutti i nomi di dominio. Apri quindi il file di configurazione di Apache utilizzando il tuo editor di testo preferito.

sudo vim /etc/httpd/conf/httpd.conf

Aggiungi i seguenti blocchi di codice per i due host virtuali.

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.105:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

Salva le modifiche ed esci. Successivamente, controlla se la sintassi è corretta e che non ci siano errori.

httpd -t

Successivamente, creeremo pagine di test HTML per ciascuno dei domini e aggiungeremo alcuni contenuti per verificare se tutto funziona correttamente dal browser.

Per miodominio1.com

Crea un file index.html nella directory miodominio1.com.

sudo vim /var/www/html/mydomain1.com/index.html 

Incolla le seguenti righe.

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain1.com.</h1>
  </body>
</html>

Salvare le modifiche ed uscire dal file.

Per miodominio2.com

Crea un file index.html nella directory miodominio2.com.

sudo vim /var/www/html/mydomain2.com/index.html 

Incolla le seguenti righe.

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain2.com.</h1>
  </body>
</html>

Salvare le modifiche ed uscire dal file.

Ora avvia il server web Apache e verifica che sia in esecuzione.

sudo systemctl start httpd
sudo systemctl status httpd

Se hai un firewall abilitato, consenti il traffico HTTP e HTTPS (quando necessario).

sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --add-service=https --zone=public --permanent
sudo firewall-cmd --reload

Ora testa i domini da un browser.

Configura hosting virtuale basato su IP Linux

L'hosting virtuale basato su IP, come suggerisce il nome, prevede più indirizzi IP assegnati al tuo server Linux. Nella maggior parte dei casi, al sistema vengono collegate due o più schede NIC per fornire più indirizzi IP.

L'obiettivo dell'hosting virtuale basato su IP è assegnare ciascun dominio a un indirizzo IP univoco che non verrà utilizzato da nessun altro dominio.

Questo è l'ideale per le situazioni in cui hai siti web crittografati con un certificato SSL (mod_ssl) o in esecuzione su porte diverse. Nella nostra configurazione abbiamo due adattatori NIC.

Per visualizzare la configurazione IP sul tuo sistema, esegui il comando ifconfig o ip a.

ifconfig
OR
ip addr

Il nostro server ha due indirizzi IP, ciascuno assegnato a una scheda NIC. L'IP 192.168.2.106 è assegnato a ens160 e 192.168.2.105 è assegnato a ens224.

Ancora una volta, configuriamo il file httpd.conf.

sudo vim /etc/httpd/conf/httpd.conf

Crea host virtuali per entrambi i domini come mostrato. Assicurati che ciascun indirizzo IP sia assegnato alla rispettiva configurazione dell'host virtuale.

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.106:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

Salvare ed uscire dal file di configurazione. Successivamente, modifica il file /etc/hosts come mostrato.

echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.106 www.mydomain2.com'>> /etc/hosts

Conferma le voci:

cat /etc/hosts

192.168.2.105 www.mydomain1.com
192.168.2.106 www.mydomain2.com

Successivamente, riavvia il server web Apache affinché le modifiche diventino effettive.

sudo systemctl restart httpd

Infine, prova la tua configurazione di hosting virtuale basata su IP accedendo agli URL come mostrato.

http://192.168.2.105
http://192.168.2.106

Questo test conferma che l'hosting virtuale basato su IP funziona proprio come previsto!

Conclusione

E questo è tutto per questa conferenza. Ci auguriamo che tu possa configurare perfettamente entrambi i tipi di hosting virtuale senza troppi problemi. Il tuo feedback su questa guida è molto apprezzato.