Sunday, April 26, 2009

Creare Virtual hosts con Apache

La tecnica dei virtual hosts consente di ospitare più domini dietro uno stesso indirizzo ip, e quindi su una stessa macchina.

E' sufficiente inserire nei propri file di configurazione di Apache (httpd.conf oppure altri file collegati come conf/extra/httpd-vhosts.conf ) alcune direttive. In particolare:

NameVirtualHost Directive
Serve per dire ad Apache da quale indirizzo IP/porta si deve aspettare di ricevere richieste per virtual host. Potete specificare un IP specifico, ad esempio:
NameVirtualHost 23.34.45.56:80

Oppure potete usare l'asterisco:
NameVirtualHost *:80
per dire ad Apache che qualsiasi richiesta arrivi sulla porta 80, indirizzata a qualsiasi indirizzo IP, può potenzialmente riferirsi ad un virtual host.

A questo punto Apache va alla ricerca di direttive che gli dicano come comportarsi per questa richiesta.

Ipotizziamo di inserire le seguenti due direttive nel file di configurazione di Apache:

<VirtualHost *:80>
ServerName pippo.it
DocumentRoot "C:\Programmi\Apache2\htdocs\pippo.it"
</VirtualHost>

<VirtualHost *:80>
ServerName pluto.it
DocumentRoot "C:\Programmi\Apache2\htdocs\pluto.it"
</VirtualHost>

Se il server riceve una richiesta per una risorsa ospitata nel dominio pippo.it (il protocollo http 1.1 obbliga i client ad inviare l'hostname a cui si rivolge) si accorge che la prima direttiva matcha con IP:porta della richiesta, quindi legge la direttiva ServerName che anch'essa matcha con l'hostname specificato nella richiesta, quindi deduce che la DocumentRoot in cui cercare la risorsa richiesta è C:\Programmi\Apache2\htdocs\pippo.it.

Se il server riceve una richiesta per una risorsa ospitata nel dominio pluto.it si accorge che la prima direttiva NON matcha con IP:porta della richiesta, mentre matcha con la seconda direttiva, e poi ragiona come prima, andando a recuperare la risorsa richiesta nel percorso specificato a partire dalla DocumentRoot C:\Programmi\Apache2\htdocs\pluto.it

La documentazione ufficiale per la versione di Apache 2.2 è all'indirizzo http://httpd.apache.org/docs/2.2/vhosts/

Ciao!!!

1 comment:

Anonymous said...

Ciao Andrea, e complimenti per la guida semplice. Sto impazzendo, non so più che fare. Ho messo in piedi un server LAMP, ma proprio non riesco a far funzionare bene il tutto. Ho il bisogno di configurare + domini su un ip, ma al momento che metto nel file httpd.conf la linea NameVirtualHost e ristarto apache, mi dà errore. Non va, e non so più che fare. Domanda semplice: hai il dominio pippo.it e pluto.it da configurare sul tuo server, e non hai ancora fatto niente di configurazioni ecc...Tu, da cosa partiresti, che file andresti a cambiare ecc...ecc... ?? Mi metteresti una guida moooooooolto easy con cosa scrivere ma soprattutto DOVE scrivere...io ho debian 5.0.3 e apache2.0 ...Ti ringrazio subititssimo...Teo