Con il nome “domini virtuali”, o Virtual Hosts, si identificano tutti gli Hosts che vengono configurati in un server Web in aggiunta all’Host originario. In pratica, con i “domini virtuali” avremo la possibilità di far operare separatamente più server in una stessa macchina, ognuno con un proprio dominio (“www.primo_server.ext”, “www.secondo_server.ext”..).
Esistono due tipologie di Virtual Hosts: quelli che fanno capo a differenti indirizzi IP (IP Based Virtual hosts) e, quelli che vengono distinti sulla base del nome (host-based o non IP virtual hosts). In entrambi i casi, abbiamo la possibilità di far convivere più siti internet, ognuno con il proprio “www.dominio.ext”, su una stessa macchina. Per chi fa “Hosting”, cioè coloro che per mestiere vendono porzioni di spazio Web destinate ad ospitare siti internet, la possibilità di creare Virtual Hosts rappresenta un indubbio vantaggio sia a livello operativo che economico.
Se disponiamo di più indirizzi IP possiamo configurare dei “domini virtuali” IP Based. Dal punto di vista di Apache, questo tipo di configurazione può essere operata in due modi: utilizzare un unico processo http che faccia capo a tutti i domini, oppure, dedicarne uno per ognuno di essi; se disponiamo di una macchina abbastanza potente in termini di risorse, la seconda opzione è certamente preferibile, tutto dipende dal numero di domini che desideriamo siano presenti nel nostro computer Server.
Se scegliamo di concedere ad ogni dominio un proprio httpd, dovremo modificare il file http.conf intervenendo sull’istruzione Listen (“ascolta”); ad essa vanno passati come parametri un indirizzo IP (o un nome di dominio) e il numero della porta che ogni httpd utilizzerà per mettersi in “ascolto” pronto a soddisfare le richieste provenienti dai client. Un esempio potrebbe essere questo:
Listen 111.111.1.1:80
Listen 111.111.1.2:81
oppureListen www.nome_dominio.ext:80
Listen www.altro_nome_dominio.ext:81
Come avrete avuto modo di notare, ad ogni dominio viene dedicata una porta diversa.
Se invece vogliamo configurare un solo httpd per tutti i “domini virtuali”, dovremo indicare in httpd.conf per ogni dominio un container simile a questo:
<VirtualHost www.nome_dominio.ext>
ServerAdmin email@nome_dominio.ext
DocumentRoot /PATH/nome_cartella
ServerName www.nome_dominio.ext
ErrorLog /PATH/error.log
CustomLog /PATH/nome_access_log
</VirtualHost>
Niente di particolarmente complesso, dall’esempio si comprende facilmente che per costruire il container sono necessari:
- La direttiva VirtualHost seguita dal nome del “dominio virtuale” che intendiamo porre in essere.
- L’indirizzo e-mail dell’Admin.
- Il percorso completo verso la DocumentRoot del nuovo dominio.
- Il nome del server (ServerName).
- Il percorso in cui si trovano i file di “log” di Error
- Il percorso in cui si trovano i “log” sul traffico delle risorse.
NameVirtualHost 111.111.1.1
<VirtualHost 111.111.1.1>
ServerName www.nome_server.ext
DocumentRoot /PATH/nome_cartella
</VirtualHost>
<VirtualHost 111.111.1.1>
ServerName www.nome_server.ext
DocumentRoot /PATH/nome_cartella
</VirtualHost>