Apache Httpd: Creiamo un Name-Based Virtual Host
Con questa guida spieghieremo brevemente come configurare un virtual host con Apache Httpd basato sui nomi di dominio.
Con Apache Httpd abbiamo due tipi di Virtual Host: IP-Based e Name-Based. Il Virtual Host basato su IP richiede che per ogni dominio ci sia un indirizzo IP, mentre per il Name-Based basta solo un indirizzo IP.
In determinate situazioni la soluzione Name-Based è senza dubbio la più semplice ed economica in quanto con un solo IP possiamo avere diversi domini sulla stessa macchina.
Configurazione
File hosts
Come primo passo configuriamo con il nostro editor di testo preferito, il file /etc/hosts
aggiungendo le entry con i nomi di dominio virtuali in modo che puntino tutti all'indirizzo 127.0.0.1
(ovvero localhost
).
Ad esempio:
127.0.0.1 localhost localhost.localdomain lotar 127.0.0.1 foo.lotar bar.lotar baz.lotar [...]
Salviamo e facciamo un test con ping
:
$ ping foo.lotar PING foo.lotar (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.051 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.081 ms ^C --- foo.lotar ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.051/0.066/0.081/0.015 ms
httpd.conf
Sempre con il nostro editor di testo aggiungiamo alla fine del file httpd.conf
le configurazioni necessarie per indicare quale directory corrisponde ad un nome di dominio.
Ad esempio:
<VirtualHost *:80> ServerName lotar.local ServerAlias lotar.* localhost DocumentRoot /srv/httpd/htdocs/ </VirtualHost> <VirtualHost *:80> ServerName foo.lotar.local ServerAlias foo.* DocumentRoot /www/foo </VirtualHost> <VirtualHost *:80> ServerName bar.lotar.local ServerAlias bar.* DocumentRoot /www/bar </VirtualHost> <VirtualHost *:80> ServerName baz.lotar.local ServerAlias bar.* DocumentRoot /www/baz </VirtualHost>
Con questa configurazione abbiamo creato un VirtualHost
sulla porta 80
ed abbiamo indicato:
ServerName
: indicando come nome, l'alias che abbiamo configurato nel file/etc/hosts
ServerAlias
: un ulteriore alias nel caso in cui il sito deve essere raggiungibile con un nome diverso di dominio (ad esempio:foo.lotar.localdomain
)DocumentRoot
: la directory effettiva del sito
Conclusioni
La configurazione appena effettuata funzionerà solamente sulla nostra macchina ma nel caso in cui siamo in una rete interna (LAN casalinga, dell'ufficio, etc) bisognerà configurare il server DNS in modo da risolvere tutti i nomi di dominio con l'IP della macchina dove è installato Apache HTTPD.