http://Tafaz.altervista.org
I VirtualHost con Apache
Stella PienaStella PienaStella PienaStella VuotaStella Vuota - 530 voti - 1967 visite

Il webserver Apache permette di ospitare molti domini differenti all'interno di un unico server, questo funzionamento viene definito VirtualHosting.
Ci sono due diversi tipi di VirtualHosting:
Ip-Based VirtualHosting
Name-Based VirtualHosting

Il primo metodo consiste nel offrire domini diversi in base all'indirizzo IP associato alla richiesta, ad esempio il dominio pippo.com viene associato all'IP 192.168.0.1 e il dominio pluto.com all'indirizzo 192.168.0.2.
Questo metodo implica però l'utilizzo di tanti indirizzi ip quanti sono i domini ospitati, il che risulta molto costoso e scarsamente utilizzato.
Il secondo, invece, sfrutta una proprietà del protocollo HTTP 1.1 (quindi non è supportato dai browser molto vecchi) che quando invia la richiesta al server anzichè utilizzare l'indirizzo ip associato al dominio, richiede direttamente il nome del dominio e il server lo traduce internamente.
Questo ci permette di pilotare le chiamate su directory diverse in base al nome di dominio richiesto e possiamo far puntare molti domini allo stesso IP.

CONFIGURAZIONE DI UN IP-BASED VIRTUAL HOST

innanzitutto dobbiamo specificare a che indirizzi e porte apache resta in ascolto, quindi andiamo ad editare il file di configurazione di Apache inserendo:

Listen 192.168.0.1:80
Listen 192.168.0.2:80

ora Apache è in ascolto ai due IP sulla porta 80 la direttiva principale che definisce il VirtualHost è del tipo <VirtualHost IP:PORT>
<VirtualHost 192.168.0.1:80>
    ServerAdmin admin@pippo.com
    ServerName www.pippo.com
    ServerAlias *.pippo.com
    DocumentRoot /var/www/pippo.com
    ErrorLog pippo_com.log
</VirtualHost>

<VirtualHost 192.168.0.2:80>
    ServerAdmin admin@pluto.com
    ServerName www.pluto.com
    ServerAlias *.pluto.com
    DocumentRoot /var/www/pluto.com
    ErrorLog pluto_com.log
</VirtualHost>

con queste due direttive andiamo a specificare per ogni IP le seguenti proprietà:
ServerName che corrisponde al canonical name del dominio
ServerAlias che ci permette di usare wildcards per i subdomains
ServerAdmin che è l'indirizzo email dell'amministratore di quel dominio
DocumentRoot la directory dove risiedono i files di quel dominio
ErrorLog il file di log degli errori del dominio

CONFIGURAZIONE DI UN NAME-BASED VIRTUAL HOST
per configurare un Name-Based VirtualHost dobbiamo aggiungere al file di configurazione di apache le seguenti due istruzioni per legarlo all'ip in ascolto e associare a quell'ip il NameBased VirtualHosting

Listen 192.168.0.1:80
NameVirtualHost 192.168.0.1

Ora come nell'esempio precedente andiamo a definire i Vhost
<VirtualHost 192.168.0.1:80>
    ServerAdmin admin@pippo.com
    ServerName www.pippo.com
    ServerAlias *.pippo.com
    DocumentRoot /var/www/pippo.com
    ErrorLog pippo_com.log
</VirtualHost>

<VirtualHost 192.168.0.1:80>
    ServerAdmin admin@pluto.com
    ServerName www.pluto.com
    ServerAlias *.pluto.com
    DocumentRoot /var/www/pluto.com
    ErrorLog pluto_com.log
</VirtualHost>

salta subito all'occhio che la configurazione è pressochè identica a quella dell'esempio IPBased a meno dell'ip in testa alla direttiva VirtualHost che in entrambi è 192.168.0.1, perchè nel caso dei NameBased le discriminanti sono le direttive ServerName e ServerAlias che vengono inviate dai browser HTTP 1.1 compatibili tramite il comando Host (es Host: www.pippo.com). Ovviamente se Apache riceve una richiesta che non ricade in uno dei due VirtualHost configurati sopra, questa verrà indirizzata nella DocumentRoot di default di Apache.


Ritorna alla pagina Articoli

COMMENTI

Aggiungi un commento!
(I commenti verranno moderati prima della pubblicazione)


PHP Powered  Smarty Powered  MySQL Powered  Valid XHTML 1.0 Transitional  Valid CSS!  View Matteo Tinazzi's profile on LinkedIn

Logo Licenza Creative Commons  


Grafica realizzata da DrMarvel^