Apache Httpd

Come vi abbiamo gia’ detto il principale file di configurazione di Apache si chiama httpd.conf e continee direttive e contenitori o come l’avevamo gia’ chiamate sezioni.

Apache Httpd

E’ possibile inserire commenti all’interno del file utilizzando il carattere “cancelletto” # all’inizio di un rigo. In quanto le righe di commento sono ovviamente ignorate da Apache

Una direttiva puo’ estendersi su piu’ righe se si utilizza alla fine di ciascun rigo il carattere backslash \

Quando un argomento di una direttiva è un percorso relativo, esso si intende riferito al percorso d’installazione del server o server root. Per esempio se l’installazione di Apache è avvenuta tramite il sorgente, come gia’ visto in questo capitolo, la server root è /usr/local/apache2 etc. Tramite la direttiva ServerRoot è anche possibile modificare questo valore predefinito.

 I Container di Apache e il Virtual Host

I Container di direttive dette anche sezioni servono a limitare il raggio di azione delle direttive , il loro ambito sarà lo scope predefinito del server config e verranno applicate all’interno del server

<Directory "/user/local/apache/htdocs">

....

</Directory>

<Location "/downloads/*.html">

......

</Location>

<FileMastch "\.gif ">

....

<FileMatch>

Vediamo alcune direttive di Container predefinite da Apache.

<VirtualHost>

Specifica un server virtuale in quanto apache consente l’utilizzo di diversi server virtuali nella stessa macchina

<DirectoryMatch> applicano direttive a una certa directory o gruppo di directory nel file system.

<Location> e <LocationMatch> applicano le direttive a specifici URL o a modelli di URL.

<Files> and <FileMatch> applicano direttive a specifici file o modelli di file.

Affrontiamo adesso un attimo i Container Condizionali di direttive.

<IfDefine> le direttive di questo container verranono eseguite se si passa all’eseguibile di Apache un’istruzione specifica da linea di comando

<IfModule> esegute solamente se il modulo passato come argomentoo è presente nel weeeb server.

Facciamo un esempio nel file di configurazione httpd.conf

<IfDefine SSL>

LoadModuel ssl_module modules/mod_ssl.so

</IfDefine>

Installazione Virtual Hosting

Vi poniamo subito la domanda di cosa sia un Hosting Virtuale. La risposta è un modo di gestire diversi siti con una singola istanza del server Apache, utilizzando l’hosting virtuale basato su indirizzo IP ed anche sul nome.

Il modo piu’ immediato di ottenere un hosting virtuale è basato sulla combinazione indirizzo IP/Porta a cui il client si connette. Apache puo’ essere configurato a tale scopo usando le sezioni < VirtualHost>

un esempio potrebbe essere il seguente.

<VirtualHost 192.168.200.4:80>

(..)

</VirtualHost>


dove 80 è ovviamente la porta di ascolto .

Facciamo adesso un esempio dove il server apache gestisce tre host virtuali basati su IP.

 

Listen8080

Listen 80

<VirtualHost 192.168.200.2>

ServerName www.example.com

DocumentRoot /usr/local/apache/sites/example.com

</VirtualHost>

<VirtualHost 192.168.200.2:8080>

ServerName www.example.com

DocumentRoot /usr/local/apache/sites/staging

</VirtualHost>

<VirtualHost 192.168.200.4:*>

ServerName www.example.net

DocumentRoot /usr/local/apache/sites/example.net

</VirtualHost>

La direttiva ServerName sarà utilizzata per la costruzione degli url, mentre la direttiva DocumnetRoot specifica una locazione diversa per i conmtenuti dei siti per ciascun host virtuale.

Ovviamente è indispensabile mettere le porte su il server è in Ascolto, altrimente si genererebbero solo errori.

Questi erano hosting virtuali basati sugli ip, ma è anche possibile in modo analogo configurare hosting virtuali basati sui nomi in quanto non è dissimile dall’iP

Prendiamo in considerazione due host virtuali che condividono IP 192.168.200.2. Apache di volta in volta che avrà una richesta decideraà verso quale host dirigere la richiesta, basandosi sul valore di intestazione di Host: della richiesta HTTP, che verrà comparato con il nome di host fornito da ServerName e con altri nomi in presenza di istruzioni opzionali ServerAlias

Vediamo subito un esempio.

Listen 80

NameVirtualHost 192.168.200.2

<VirtualHost 192.168.200.2>

ServerName www.example.com

ServerAlias example.com web.example.com

</VirtualHost>

L’istruzione NameVirtualHost india che un particolare IP sarà utilizzato per gli host virtuali basati sul nome.. Ovviamente i DNS dovranno essere configurati nel rooter per avere un indirizzamento a 192.168.200.2

Come ultimo passo vediamo come fare coesistere host virtuali basati sul nome con host virtuali basati sull’ip e lo facciamo nel modo piu’ semplice possibile ossia attraverso un esempio

NameVirtualHost 192.168.200.2

<VirtualHost 192.168.200.2>

ServerName www.example.com

DocumentRoot /usr/local/apache/sites/example.com

</VirtualHost>

<VirtualHost 192.168.200.2>

ServerName www.example.com

DocumentRoot /usr/local/apache/sites/staging

</VirtualHost>

<VirtualHost 192.168.200.4>

ServerName www.example.net

DocumentRoot /usr/local/apache/sites/example.net

</VirtualHost>

E con questa lezione concludiamo la nostra guida per quanto riguarda il server Apache ossia il server piu’ utilizzato nel web, nella speranza di esservi stati di aiuto.