Guida Apache 1. Introduzione: i Web Server 2. Installare Apache su

Transcript

Guida Apache 1. Introduzione: i Web Server 2. Installare Apache su
Guida Apache
1. Introduzione: i Web Server
2. Installare Apache su Linux
3. Installare Apache su Windows
4. Operazioni base di Apache: avvio, riavvio e arresto
5. httpd.conf: il cuore di Apache
6. Configurare Apache: httpd.conf - 1a parte
7. Configurare Apache: httpd.conf - 2a parte
8. Agire sulle risorse: direttive di Apache
9. Gestione dinamica e metodi di controllo
10. Autenticazione in Apache
11. I filtri di Apache
12. Creazione dell'Index e gestione delle directory di Apache
13. Domini virtuali di Apache
14. Errori su Apache e la loro gestione
15. Opzioni avanzate di Apache: alias e redirect
Introduzione: i Web Server
Come funziona Internet? Una semplice domanda la cui risposta svela spesso dinamiche complesse. Il comune fruitore
della Rete non ha bisogno di conoscere le meccaniche che regolano il funzionamento del Web, un browser per la
navigazione con il quale accedere alle risorse desiderate gli è più che sufficiente.
Lo stesso discorso non può essere applicato a coloro che vogliono fare della creazione e della gestione di pagine web il
loro mestiere, per essi è necessario conoscere quali meccanismi entrano in gioco durante la normale attività di
navigazione che milioni di persone mettono in atto ogni giorno.
Cerchiamo allora di rispondere alla nostra domanda iniziale: come funziona Internet?
Il Web si basa sul principio del trasferimento di informazioni da un terminale (Host) all'altro attraverso dei sistemi di
trasmissione detti protocolli, tra questi HTTP (Hyper text Transfer Protocol) è quello più diffuso. Questo protocollo
prevede che l'utente navigatore digitando una URL o cliccando su un link richieda l'accesso a determinate risorse
(input); queste risorse, quando disponibili, gli vengono inviate sotto forma di file, generalmente pagine html o immagini
(output).
In pratica l'utente grazie al meccanismo delle URL e dei link, non fa altro che indicare attraverso il programma di
navigazione (browser) del suo computer (client), il percorso da seguire per raggiungere determinate informazioni
contenute in un altro computer (server). Un server è quindi un elaboratore che contiene e fornisce file.
Nel caso specifico dei server Web si parla di computer destinati ad ospitare siti internet, questi ultimi possono essere
composti da pagine statiche (semplici pagine .htm e html) o dinamiche (.php, asp..), una distinzione molto importante
per l'argomento che andremo a trattare in questa guida: il Web server Apache.
Un Web server non è altro che un software installato in un server con la funzione di elaborare pagine web e generare
dinamicamente contenuti.
Le semplici pagine .htm non necessitano di particolari interventi da parte del Web server, il loro codice viene
interpretato dal browser del computer client e per questo l'html è definito come un linguaggio client side. Le pagine
.php o .asp, contengono dei codici destinati a produrre dei comportamenti e a generare dinamicamente html, perchè ciò
sia possibile è necessaria la mediazione di un Web server; PHP e ASP vengono quindi definiti linguaggi server side.
Esemplificando, quando si invia ad un Web server la richiesta di una pagina .htm, statica, esso:
1.
2.
3.
riconosce la richiesta
cerca e, se presente, trova la pagina nel computer server
invia la pagina al browser.
Nel caso di una pagina dinamica, invece, il Web server:
1.
2.
3.
4.
riconosce la richiesta
cerca e trova la pagina all'interno del server Web
esegue le istruzioni contenute all'interno del codice producendo dinamicamente contenuti
invia la pagina browser.
La differenza salta immediatamente agl'occhi.
Nei prossimi capitoli ci occuperemo appunto dell'installazione, della configurazione, della gestione e delle
caratteristiche peculiari di Apache, il Web server più utilizzato della rete.
Installare Apache su Linux
Il Web server Apache è un software Open Source, questo vuol dire che il suo codice è pubblicamente disponibile ed
aperto al contributo di chiunque desideri modificarlo agevolando così il suo continuo sviluppo; in questo modo Apache
ha potuto usufruire dell'opera volontaria di migliaia di programmatori sparsi in tutto il mondo.
Inoltre, Apache è un programma scaricabile gratuitamente e liberamente dalla Rete (http://httpd.apache.org/), elemento
che insieme alle sue indubbie qualità di stabilità e potenza ha contribuito non poco alla grande diffusione di questo Web
Server.
Apache lavora agevolmente sia in ambiente Linux che Windows, dunque in questo e nel prossimo capitolo della Guida
descriveremo le procedure necessarie all'installazione in entrambi i Sistemi Operativi.
Esistono vari modi per installare Apache in ambiente Linux: possiamo utilizzare i CD d'installazione della nostra
distribuzione; possiamo usare il sistema RPM (RedHat Package Manager); infine, possiamo utilizzare il metodo
classico basato sulla compilazione dei sorgenti.
Se disponiamo dei CD d'installazione di una distribuzione Linux, come per esempio la Mandrake (da un pò di tempo
ribattezzata con il nome di Mandriva), potremo integrare Apache nel nostro sistema utilizzando il comodo Rpmdrake,
un software con cui gestire le installazioni, le disinstallazioni e l'aggiornamento dei pacchetti presenti nell'OS. Da Kde
andremo su:
Configurazione > Gestione pacchetti
A questo punto avremo a disposizione una comoda interfaccia grafica dotata di un motore di ricerca; cerchiamo la voce
Apache è dal database verranno estratti i risultati relativi al programma che stiamo cercando; una volta selezionato il
quadratino bianco posto alla destra del suo nome e cliccato su installa, Rpmdrake controllerà la presenza nel sistema
delle necessarie dipendenze e ci richiederà il CD d'installazione in cui Apache è contenuto. Non dovremo fare altro che
inserire il CD nel lettore e rimpiazzarlo con un altro se e quando ci verrà chiesto, in pochi attimi avremo un Web server
Apache installato su Linux.
Oltre all'uso di Rpmdrake, abbiamo l'alternativa di poter installare manualmente l'RPM di Apache dopo averlo
scaricato dalla rete (per esempio da questo link). Una volta terminato il download di una delle versioni disponibili (ad
esempio la apache-1.3.31-40.i386.rpm), dovremo digitare da Shell la seguente riga di comando:
rpm -ihv ./apache-1.3.31-40.i386.rpm
Tanto basterà ad installare Apache. Il nostro sistema verrà però integrato da un Web server "essenziale" a cui dovremo
aggiungere man mano i "moduli", di cui avremo bisogno come quello per PHP, SSL, PERL e molti altri.
L'ultimo sistema di installazione di cui parleremo, è quello classico in ambiente Linux effettuato per compilazione di
sorgenti. Nonostante la nomea di procedura ostica che si porta dietro, questo metodo non presenta particolari difficoltà.
Quello che dovremo fare sarà scaricare dalla rete un archivio compresso contenente i sorgenti di Apache (per esempio
l'archivio apache_1.3.33.tar.gz da questo link).
A questo punto dovremo scompattare e decomprimere l'archivio attraverso il comando:
tar xvfz apache_1.3.23.tar.gz
Raggiungeremo quindi i sorgenti con il comando:
cd apache_1.3.23
e cominceremo la compilazione digitando:
./configure --prefix=/usr/local/apache
dove "prefix" indicherà il percorso verso la directory d'installazione. Per terminare la compilazione useremo il
comando:
make
e finiremo quindi l'installazione con un:
make install
A questo punto potremo controllare se tutto è andato bene lanciando da Shell l'istruzione:
/usr/local/apache/bin/apachectl start
Se non riceveremo messaggi di errore facciamoci pure i complimenti, l'installazione di Apache sarà avvenuta con
successo!
Installare Apache su Windows
Notoriamente Linux rappresenta l'ambiente di sviluppo e di produzione privilegiato per Apache. La sterminata
comunità di sviluppatori che ruota intorno a questo Web server ha comunque prodotto una buona integrazione anche
per Windows; quindi coloro che non hanno pratica del Pinguino potranno in ogni caso testare le funzionalità di Apache
nel loro PC dotato di OS Microsoft.
Il sito ufficiale di Apache mette a disposizione dei comodi pacchetti .exe comprendenti una facile installazione guidata
non dissimile da quella utilizzata per la maggior parte degli applicativi esistenti.
I download disponibili sono numerosi e ruotano principalmente attorno alle due versioni principali di Apache, la 1.3.x e
la 2.x; dato che la prima è indubbiamente la più testata e meno afflitta da bugs (soprattutto per quanto riguarda
Windows), sarà questa che utilizzeremo negli esempi del presente capitolo.
Una volta scaricato il pacchetto di installazione di una versione di Apache, per esempio la "1.3.31-win32-x86no_src.exe", sarà sufficiente un doppio click sul file di Setup e la procedura guidata avrà inizio.
Dopo aver visualizzato il classico messaggio di benvenuto cliccheremo su [Next]; accetteremo i termini di utilizzo del
programma, leggeremo le note su questa versione e poi cliccheremo ancora su [Next].
Appariranno tre campi form da compilare:
1.
2.
3.
Network Domain: sarà sufficiente scrivere "localhost" se stiamo operando su un PC che non fa parte di una
rete intranet; in caso contrario dovremo inserire il nome del dominio di riferimento.
Server Name: inseriamo un nome a piacere per il nostro server; nel caso in cui operiamo in una rete dovremo
invece indicare il nome della nostra postazione all'interno della stessa.
Administrator's E-mail Address: inserite un indirizzo e-mail.
Per terminare questa fase selezioniamo l'opzione per avviare Apache come un servizio disponibile per tutti gli utenti e
clicchiamo su [Next]:
A questo punto ci verrà chiesto di selezionare la tipologia di installazione: scegliamo quella completa e andiamo avanti.
Ora dovremo indicare la directory d'installazione; se non abbiamo particolari preferenze in merito lasciamo invariata
quella di default e clicchiamo su [Next] poi su [Install] e [Finish].
Dato che Apache potrà partire automaticamente a fine installazione, per controllare se tutto è andato per il meglio
lanceremo il nostro browser e digiteremo l'URL:
http://localhost/
oppure:
http://127.0.0.1/
Il messaggio di benvenuto di Apache sarà:
Funziona!
Il Server Web Apache è stato installato su questo sito Web!
Operazioni base di Apache: avvio, riavvio e arresto
Descrivere le semplici operazioni relative all'avvio, al riavvio e all'arresto di Apache, rappresenta un'utile occasione per
approfondire il discorso riguardante il funzionamento di questo Web server.
Innanzitutto, come funziona Apache? In pratica, al suo avvio esso genera un processo principale, noto come httpd, a
cui si accompagnano tutta una serie di processi subordinati ognuno destinato ad una particolare funzione e tutti "in
ascolto" (listening), pronti ad entrare in gioco nel caso sia necessario il loro intervento. I processi di Apache attendono
gli input provenienti dai client attraverso una "porta", in genere la n°80; questo parametro può però essere modificato
rimanendo nell'ambito delle prime 1024 porte.
Nel momento del riavvio vengono arrestati tutti i processi secondari, rimane invece in vita httpd che si occuperà di
rigenerare gli altri processi seguendo le indicazioni del file di configurazione (httpd.conf).
Quando invece, richiediamo ad Apache di arrestarsi il processo principale si spegnerà e causerà la "morte" di tutti i
processi secondari.
In Linux abbiamo la possibilità di avviare Apache e i suoi processi attraverso due comandi principali:
"/etc/rc.d/init.d/httpd"
e
apachectl
entrambi devono essere corredati dalle eventuali opzioni o argomenti: "start, "restart" e "stop".
Così, nel caso di "/etc/rc.d/init.d/httpd" per avviare Apache digiteremo:
/etc/rc.d/init.d/httpd start
Per riavviare Apache avremo poi:
/etc/rc.d/init.d/httpd restart
Infine, per arrestare Apache utilizzeremo:
/etc/rc.d/init.d/httpd stop
Stesso discorso per quanto riguarda "apachectl":
apachectl start
avvierà Apache. Il comando:
apachectl restart
riavvierà il Web server e:
apachectl stop
provvederà ad arrestarlo.
Per quanto riguarda le medesime operazioni in ambiente Windows, non sarà necessario inoltrarci in descrizioni
approfondite, ci limiteremo ad indicare le semplicissime procedure per l'avvio, il riavvio e l'arresto di Apache che il
lettore potrà eseguire con pochi click del mouse:
Start / Programmi / Apache HTTP Server / Control Apache Server / Start
Start / Programmi / Apache HTTP Server / Control Apache Server / Restart
Start / Programmi / Apache HTTP Server / Control Apache Server / Stop
httpd.conf: il cuore di Apache
I comportamenti e le funzionalità di Apache vengono stabilite da un file di configurazione chiamato httpd.conf
modificabile attraverso un semplice editor di testo come Vim o Gedit per Linux e NotePad per Windows.
Se non ricordate la directory in cui avete installato Apache in Linux, generalmente:
/usr/local/apache/conf/
potrete facilmente accedere al percorso del file di configurazione digitando da Shell la riga di comando:
locate httpd.conf
Per quanto riguarda Windows, la directory di default è in genere:
C:\Programmi\Apache Group\Apache\conf
In alternativa basterà un semplice:
Start / Trova / File e Cartelle / httpd.conf
Editando httpd.conf troverete una lunga serie di istruzioni; alcune righe saranno precedute dal simbolo del cancelletto
"#", ciò significa che sono state "commentate" e le istruzioni che contengono non avranno influenza sul funzionamento
di Apache; in molti casi si tratta di semplici indicazioni riguardanti le diverse tipologie di configurazione.
Le righe non precedute da "#" sono invece vere e proprie istruzioni di configurazione abilitate; prendiamo per esempio
le righe:
#AddModule mod_rewrite.c
AddModule mod_access.c
Il cancelletto davanti ad "AddModule mod_rewrite.c" indica che questo modulo non è abilitato e non lo sarà fino a
quando questa riga non verrà "decommentata" eliminando il "#"; al contrario "AddModule mod_access.c" indica un
modulo abilitato che potrà essere disabilitato inserendo il cancelletto a inizio riga.
Come potrete notare httpd.conf è un file lungo e ricco di opzioni, non sarà possibile descriverle tutte in un unico
capitolo, dedicheremo quindi i prossimi due a sottolineare nel miglior modo possibile le sue funzionalità principali.
Configurare Apache: httpd.conf - 1a parte
La prima sezione del file httpd.conf, ("Section 1"), è dedicata all'ambiente in cui opera Apache ("Global
Environment").
All'interno di essa troviamo alcune istruzioni fondamentali come il ServerType, attraverso cui viene indicata la
modalità di funzionamento di Apache; nel nostro caso quest'ultima sarà: ServerType standalone, che consente di
mantenere il Web server sempre attivo limitando i tempi di latenza. In pratica la modalità standalone permette ad
Apache di lavorare come servizio in background ("demone") rispondendo autonomamente agli input provenienti dai
client.
Abbiamo poi la ServerRoot, che stabilisce la directory in cui si trovano i file di configurazione e gli altri file necessari
per il funzionamento di Apache.
Di seguito troviamo il PidFile, il cui percorso su Linux è in genere:
/var/run/httpd.pid
mentre in Windows sarà di solito in:
logs/httpd.pid
httpd.pid è in pratica il file in cui Apache scrive i processi in atto al momento del suo avvio.
Continuando a scorrere la Section 1, troveremo altre due opzioni: ResourceConfig e AccessConfig, rispettivamente
correlate ai file "srm.conf" e "access.conf". Questi ultimi dovrebbero essere letti dal Web server una volta terminata la
lettura di httpd.conf; in realtà nelle ultime versioni tali istruzioni sono ormai obsolete e le funzioni dei due file sono
state incorporate da httpd.conf. Ne consegue che le opzioni ResourceConfig e AccessConfig appariranno commentate
in Windows e settate su "/dev/null" in Linux.
Andando oltre visualizzeremo l'istruzione Timeout dalla funzione abbastanza intuitiva: quando il tempo di attesa per la
soddisfazione dell'input inviato da un client supera il valore impostato espresso in secondi, allora viene inviato un
messaggio d'errore. Di default il time out scatta dopo 300 secondi, ma può essere modificato a piacere soprattutto per
limitare i problemi generati dal "traffico" sul proprio server Web.
Dopo Timeout abbiamo l'istruzione KeepAlive che può essere completata tramite le opzioni "On" ed "Off". Se settata
in "On", KeepAlive permetterà di inviare più file attraverso una stessa connessione TCP. In caso contrario
(sconsigliato), "Off" aprirà una nuova connessione ad ogni richiesta.
A KeepAlive segue l'istruzione MaxKeepAliveRequests, grazie alla quale potremo indicare un valore (di default 100)
corrispondente alla quantità di richieste possibili per singola connessione TCP.
KeepAliveTimeout, di default impostato a 15, esprime in secondi il tempo che il Web Server dovrà aspettare per
accogliere un'ulteriore richiesta prima che la connessione venga chiusa.
Sottolineiamo poi MaxRequestsPerChild: se httpd, il processo principale di Apache, è "padre", allora i suoi processi
secondari saranno "figli". Grazie a questo parametro è possibile settare la quantità di richieste gestibili da ciascun
processo subordinato; se indichiamo "0" (infinito), ogni processo figlio avrà la possibilità di gestire illimitate richieste.
Consigliamo in ogni caso di specificare comunque un valore (anche in miliardi) in modo da evitare eccessivi
sovraccarichi.
Segnaliamo infine il supporto per i DSO (Dynamic Shared Object). Questa voce si divide in due parti: "LoadModule" e
"AddModule". Osservando queste istruzioni troveremo una serie di righe, molte delle quali commentate, che
permettono di abilitare o disabilitare alcuni "moduli" o funzionalità addizionali. Quando viene decommentata, aggiunta
o commentata una voce in "LoadModule" è necessario operare nello stesso modo sull'"AddModule" corrispondente.
Se per esempio decidiamo di installare PHP 5 come modulo aggiuntivo di Apache, per rendere operativa questa
modifica dovremo aggiungere in corrispondenza dei "LoadModule" la riga non commentata
LoadModule php5_module "PATH/php/php5apache.dll"
e, in corrispondenza degli "AddModule", dovremo fare lo stesso scrivendo
AddModule mod_php5.c
Configurare Apache: httpd.conf - 2a parte
Passiamo ora all'analisi delle istruzioni più importanti riportate nella "Section 2" del file di configurazione di Apache
httpd.conf; come vedremo, questa sezione contiene voci correlate alla configurazione del Web server ("'Main' server
configuration").
Innanzitutto troviamo il riferimento alla porta di "ascolto" dei processi di Apache, di default la Port 80. Come abbiamo
già avuto modo di sottolineare, è possibile modificare il numero di questa porta TCP rimanendo nell'ambito delle prime
1024 porte. Se per esempio nel nostro computer è installato un altro Web server che attende le richieste sulla porta 80,
come IIS della Microsoft, potremo modificare quella di default di Apache in 81.
Andando oltre, troveremo altre opzioni sulle quali è possibile intervenire. Tra queste abbiamo l'indirizzo di posta del
ServerAdmin che, se ciò non è già stato fatto in installazione, può essere modificato inserendo la nostra mail personale
o di lavoro.
Il ServerName, cioè il nome della nostra macchina server, varia a seconda del dominio di appartenenza; se lavoriamo
in locale e al di fuori di una rete potremo lasciare senza problemi la consueta dicitura "localhost".
La DocumentRoot, stà ha indicare il percorso che porta alla cartella in cui sono contenute le pagine del nostro sito
Web. Questo parametro può essere variato a seconda delle nostre esigenze; generalmente avremo in Linux qualcosa
come:
"/var/www/html"
mentre in Windows troveremo:
"C:/Programmi/Apache Group/Apache/htdocs"
Leggeremo poi una serie di voci di questo tipo:
<Directory "PATH_per_la_ROOT">
Options Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
in esse viene impostata una directory recante direttive (container) per la configurazione del server. Delle direttive
parleremo più approfonditamente tra poco. Andando avanti troveremo:
<IfModule mod_mime.c>
TypesConfig /PATH/mime.types
</IfModule>
Un'istruzione, quella appena proposta, con la quale viene indicato che, nel caso (if) in cui sia abilitato il "modulo per i
MIME" ("mod_mime"), dovrà essere caricato il file/elenco con la lista dei MIME file type ("mime.types").
Ora passiamo a DefaultType, solitamente predefinito come "text/plain", che stabilisce la tipologia di file forniti da
Apache.
Un'altra istruzione importante è ErrorLog, per la quale viene stabilito il percorso che dovrà portare ai "log" in cui
verranno scritti gli errori conseguenti alle richieste non soddisfatte ("error_log"). Ad ErrorLog si accompagna
un'opzione relativa al livello di debugging generalmente settata in "warn", un valore medio in una scala crescente che
conta: "debug", "info", "notice", "warn", "error", "crit", "alert", "emerg".
Sono poi degni di nota i riferimenti alla direttiva Alias e al relativo "modulo"; di questa direttiva parleremo più avanti,
per ora specificheremo il fatto che grazie a queste istruzioni è possibile definire un alias (URL "traslata") per una
cartella destinata ad ospitare script CGI posizionata esternamente rispetto alla DocumentRoot e quindi non accessibile
dal web.
Andando oltre troveremo alcune delle istruzioni più note dei Web Server, gli ErrorDocument 500, 404 e 403.
L'errore 500, conosciuto anche come "Internal server error" viene notificato nel caso in cui una condizione inaspettata
(un errore interno al programma che gestisce il servizio) impedisca al server di soddisfare una richiesta del client.
L'errore 404, il notissimo "File Not Found", viene notificato quando il Web server non trova l'informazione richiesta.
Le cause di questa notifica sono in genere due: un errore nella sintassi dell'URL o l'inesistenza della risorsa desiderata
all'interno del percorso indicato.
L'errore 403, conosciuto anche come "accesso negato" ("Unauthorized user"), si verifica quando l'utente prova ad
accedere ad una pagina "protetta" senza averne l'autorizzazione.
I messaggi di notifica degli ErrorDocument sono personalizzabili e possono consistere in un'informazione da inviare
al client:
ErrorDocument 500 "The server made a boo boo
O in una pagina da visualizzare in alternativa a quella richiesta:
ErrorDocument 404 /missing.html
Terminiamo il nostro discorso riguardante le impostazioni di httpd.conf segnalando l'istruzione relativa al
"mod_setenvif":
<IfModule mod_setenvif.c>
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;"
nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
rowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
</IfModule>
In essa vengono settate differenti opzioni per le risposte da inviare alle particolari richieste che possono pervenire da
specifiche tipologie di browser.
Agire sulle risorse: direttive di Apache
Alla base del funzionamento di Apache abbiamo le direttive, note anche come container. I container raggruppano
risorse e informazioni con direttive di configurazione comuni; in pratica, i file e le cartelle di uno stesso gruppo
rispondono alle medesime regole. Per isolare un gruppo dagli altri e rendere valide soltanto per esso determinate
direttive basterà utilizzare una sintassi simile a quella HTML:
<Directory /PATH/file o cartella>
istruzione
istruzione
………….
</Directory>
Abbiamo visto un esempio di container nel capitolo precedente:
<Directory "PATH_per_la_ROOT">
Options Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Come si avrà modo di osservare, le direttive vengono imposte attraverso semplici parole inglesi come Allow (permetti)
o deny (nega).
All'interno di httpd.conf, troveremo sovente alcune indicazioni che costituiscono la sintassi base delle direttive.
Innanzitutto osserviamo i "tags" minore "<" e "maggiore" ">" con i quali viene delimitata la directory per cui le
direttive avranno valore. Per ogni directory viene indicato il relativo percorso e le direttive influiranno sia sulla cartella
principale che sul suo contenuto in termini di file e sotto cartelle.
Grazie all'uso delle "espressioni regolari", è possibile indicare le cosiddette DirectoryMatch in modo da imporre
determinate direttive soltanto ad alcune cartelle, come ad esempio quelle che cominciano con una determinata lettera
dell'alfabeto.
Oltre a <Directory..></Directory> e DirectoryMatch, avremo la possibilità di impostare direttive anche attraverso
Files e FilesMatch, magari utilizzando il comodo carattere jolly "*" (tutto); se per esempio scriviamo:
Files *.ext
la nostra direttiva avrà valore per tutti (*) i file dotati di una determinata estensione indipendentemente dal loro nome.
Location e LocationMatch funzionano similmente alle istruzioni precedenti, ma non si riferiscono a dei percorsi
interni al server, bensì a delle URL specifiche. In httpd.conf troviamo per esempio questa direttiva:
<pre><Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from NOME_DOMINIO
</Location>
Che autorizza la ricezione dei "reports" del server all'indirizzo "http://servername/server-status".
Abbiamo poi VirtualHost utilizzato per le istruzioni relative alla gestione dei "domini virtuali" con più siti internet di
cui parleremo a breve; per ora basti sapere che tramite VirtualHost è possibile settare diverse DocumentRoot, indirizzi
di posta elettronica dell'Administrator, percorsi verso i file di "log" e molto altro.
Infine, è possibile utilizzare le istruzioni Limit e LimitExcept per differenziare i criteri di accesso a file e cartelle; se
Limit stà appunto per "poni un limite a", LimitExcept svolge una funzione più specifica, significa infatti "poni un
limite a tutti i metodi di accesso tranne che a quello indicato". Raramente queste due istruzioni sono espresse da sole e
più frequentemente sono parte integrante di una direttiva principale. Prendendo spunto da httpd.conf, proponiamo un
esempio che riguarda il controllo degli accessi alle directory dello User:
<Directory "PATH">
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,denyAllow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
Gestione dinamica e metodi di controllo
Come abbiamo avuto modo di osservare, Apache risponde a decine di direttive che stabiliscono i diversi
comportamenti del Web server. Dato che sarebbe abbastanza scomodo dove indicare una particolare direttiva e
modificare il file di configurazione ogni volta che si presentano determinate fattispecie, caso che per esempio si verifica
per l'introduzione di un nuovo "modulo", httpd.conf possiede alcune istruzioni grazie alle quali è in grado di gestire
dinamicamente diverse situazioni a seconda dei casi e delle necessità.
Riguardiamo un esempio già visto in precedenza:
<IfModule mod_setenvif.c>
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;"
nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
rowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
</IfModule>
Grazie al "mod_setenvif.c" è possibile stabilire le differenti risposte da inviare alle richieste che possono provenire da
specifiche tipologie di browser.
Alla base di tutto abbiamo il costrutto di controllo IfModule che permette di dar luogo alle istruzioni indicate nella
direttiva sole se (if) il "modulo" è presente ed abilitato; in caso contrario non avremo la necessità di intervenire su
httpd.conf in quanto questa possibilità è già prevista da IfModule.
Oltre ad IfModule, abbiamo IfDefine che per quanto riguarda la sua funzione non si differenzia molto dal primo ma
entra in gioco soltanto in casi specifici come per esempio test del Web server e debugging; quando il sistema è in
queste fasi, IfDefine consente l'esecuzione di determinate direttive che ne rendono più semplice l'esecuzione.
Se IfModule e IfDefine gestiscono risorse interne, Include permette di richiamare file di configurazione esterni alla
DocumentRoot anche se questi sono indicati all'interno di direttive che richiamano risorse ad essa interne; in Linux
per esempio abbiamo:
Include /etc/httpd/conf.d
un istruzione che richiama all'interno di una direttiva le risorse relative al percorso specificato.
Per quanto riguarda i metodi di controllo, Apache viene regolato in particolare da due istruzioni chiamate Options e
Overrides.
La prima direttiva, Options, configura i rapporti tra il Web server e il sistema in cui esso è installato. Avremo quindi
nove reazioni diverse (opzioni) di Apache a seconda degli stimoli provenienti dal File System:
1.
2.
3.
4.
5.
6.
7.
8.
9.
All: è una "Global Option", ciò vuol dire che viene settata di default; essa ha la funzione di abilitare
l'esecuzione delle funzionalità a cui è riferita.
None: è anch'essa una "Global Option", disabilita l'esecuzione delle funzionalità a cui è riferita; può comunque
essere modificata accertandosi prima che gli interventi da effettuare non pregiudichino la sicurezza del sistema.
FollowSymLinks: abilita i percorsi indicati dai "link simbolici" che richiamano PATH realmente esistenti nel
server.
SymLinksIfOwnerMatch: svolge la stessa funzione di FollowSymLinks ma solo se il proprietario coincide
Includes: rende possibile l'esecuzione di scripts lato server.
IncludesNOEXEC: svolge la stessa funzione di Includes ma impedisce l'esecuzione di comandi locali.
MultiViews: permette la "Content Negotiation"; contrariamente a quanto viene spesso detto riguardo a
MultiViews, essa non elimina le estensioni dei file, più semplicemente crea molteplici rappresentazioni di una
stessa risorsa web, si pensi per esempio ai siti internet "multilingua". Soltanto nel caso di MultiViews le
"Global Option" All e None non sono settate di default.
Indexes: nel caso in cui non esista una pagina "index" (pagina d'"ingresso" del sito internet), permetterà di
visualizzare l'elenco delle risorse interne alla directory indicata.
ExecCGI: permette l'esecuzione dei CGI ed è necessaria per qualsiasi eseguibile.
Per quanto riguarda Overrides, dobbiamo sottolineare la funzione svolta dalla direttiva AllowOverride con la quale si
definiscono le funzionalità che non verranno abilitate o limitate dai noti file ".htaccess"; questi ultimi sono dei file che
opzionalmente possono essere usati per definire delle configurazioni specifiche riferite alle directory in cui vengono
creati.
Nel caso di AllowOverride, abbiano a disposizione sette opzioni per la configurazione:
1.
2.
3.
4.
5.
6.
7.
All: autorizza il non rispetto delle direttive.
None: impedisce il non rispetto delle direttive.
AuthConfig: consente l'impiego di direttive di autorizzazione.
FileInfo: consente l'impiego di direttive per il controllo delle tipologie di documenti.
Indexes: consente l'impiego di direttive per il controllo della visualizzazione dell'elenco delle directory.
Limit: consente l'impiego di direttive per il controllo degli accessi.
Options: consente l'impiego della direttiva Options
Per chiarire le idee proponiamo un piccolo esempio:
<Directory /PATH/html>
Options Indexes
AllowOverride All
</Directory>
Come è facile osservare, il codice appena proposto rende possibile visualizzare l'elenco dei contenuti interni alla
DocumentRoot, ed è inoltre consentito ignorare le direttive espresse tramite un file ".htaccess".
In ogni caso, per questioni di sicurezza o di ottimizzazione del sistema sarà sempre possibile disabilitare gli ".htaccess"
tramite il metodo AllowOverride utilizzando un semplice script da inserire in httpd.conf:
<Directory />
AllowOverride None
</Directory>
questo script avrà efficacia per tutte le directory a parte quelle in cui saremo noi ad autorizzare l'Override.
Autenticazione in Apache
Le direttive del Web server Apache possono tornarci utili per stabilire metodi di autorizzazione per l'accesso alla
DocumentRoot utilizzando la classica procedura basata su un nome utente (user name) e su una parola chiave
(password).
Sarà possibile cifrare i dati di accesso inserendoli in un apposito file chiamato htpasswd con l'unica condizione che il
nome utente e la parola chiave siano differenti da quelli già indicati per l'accesso al sistema in cui Apache è stato
installato.
Oltre ai dati di accesso, è possibile stabilire dei gruppi, ognuno facente capo ad un unico nome; la metodologia "per
gruppi" permetterà di stabilire regole d'accesso valide per tutti gli utenti appartenenti ad essi. Otterremo questo risultato
semplicemente agendo sulla direttiva AuthName a cui passeremo come parametro il nome necessario
all'autorizzazione.
Tramite AuthName, è possibile descrivere all'utente il tipo di autorizzazione richiesta in modo che egli sia sempre in
grado di utilizzare la procedura corretta a seconda dei casi.
Un'altra direttiva fondamentale è AuthType, riferita alla tipologia di autenticazione; in ogni caso per Apache
quest'ultima dovrà essere settata come Basic o come Digest. Nel caso di Basic, l'autenticazione consisterà in un
semplice invio dei dati inseriti dall'utente, con Digest, invece, nome utente e password verranno criptati utilizzando il
sistema di codifica MD5; quest'ultimo metodo, in linea teorica preferibile, è purtroppo al momento non ben supportato.
Ad AuthType segue AuthUserFile, una direttiva a cui dovremo far passare come parametro il percorso in cui si trova
il file che contiene i dati necessari per l'autenticazione.
Abbiamo poi AuthGroupFile, una direttiva che può essere inserita a discrezione dell'amministratore del Web Server
nel caso in cui egli desideri fornire ad Apache una lista di utenti appartenenti ad uno stesso gruppo per i quali valgono
le medesime regole di autenticazione. Se intendiamo impostare AuthGroupFile, sarà sufficiente passare come
parametro a questa direttiva il percorso completo che porta al file contenente l'elenco degli appartenenti al gruppo.
Possiamo poi specificare tre ulteriori direttive: require user, require group e require valid-user. Nel caso di require
user è necessario indicare quali utenti sono autorizzati all'accesso; nel caso di require group è necessario indicare quali
gruppi di utenti sono autorizzati all'accesso; infine, nel caso di require valid-user tutti vengono autorizzati all'accesso.
Alla luce di ciò che abbiamo appena detto, possiamo fare un esempio completo di container per le direttive di
autorizzazione:
<Directory /PATH/area_riservata>
AllowOverride None
Options Indexes
AuthName Area Riservata
AuthType Basic
AuthUserFile /PATH/httpd/conf/.htpasswd
AuthGroupFile /PATH/httpd/conf/.htgroup
require user Amministratore
</Directory>
I filtri di Apache
Apache ha la possibilità di filtrare le richieste provenienti dai client e di soddisfare soltanto quelle trasmesse da utenti
eventualmente autorizzati alla fruizione delle risorse contenute nel server Web.
L'opera di filtraggio viene eseguita attraverso differenti procedure basate su particolari fasi di controllo; in generale vi
sono due modi attraverso i quali il Web server autorizza o meno la soddisfazione delle richieste: nel primo caso,
tramite il modulo "mod_access", confronta l'indirizzo IP del client in attesa di risposta con l'elenco di quelli che hanno
l'autorizzazione all'accesso; nel secondo caso, Apache non permetterà la soddisfazione della richiesta fino a quando il
client non sarà in grado di autenticarsi tramite la comunicazione di un nome_utente e di una parola_chiave validi per il
dominio di riferimento.
I comportamenti di "mod_access" possono essere configurati sulla base delle intenzioni dell'amministratore indicando i
dati necessari all'autenticazione come l'indirizzo IP e il nome di Host; si hanno poi tre direttive dal significato
abbastanza intuitivo che regolano le impostazioni di questo modulo:
1.
2.
Allow: autorizza la soddisfazione delle richieste se il client rispetta i criteri prestabiliti per l'accesso alle
risorse.
Deny: ha funzione contraria rispetto ad allow
e
3.
Order: rappresenta una direttiva complementare rispetto ad allow e deny, la sua funzione è quella di stabilire
in che ordine queste due istruzioni dovranno essere osservate.
A queste tre direttive basterà passare come parametro l'Host da abilitare o disabilitare; nel seguente esempio:
allow from lukeonweb.net
viene autorizzato l'accesso all'Host indicato.
L'uso di Order risulta abbastanza semplice è và scelto di volta in volta a seconda delle esigenze; in questo esempio:
order deny,allow
deny from all
allow from chasky.com
la direttiva dany ha precedenza su allow ("order deny,allow") e nessun Host ha la possibilità di accedere ("deny from
all") tranne quello autorizzato ("allow from chasky.com") .
Il filtraggio degli accessi può essere operato anche specificando l'indirizzo o gli indirizzi IP che si desidera siano
autorizzati ad accedere alle risorse:
<Directory />
order deny,allow
deny from all
allow from 127.0.0.1
</Directory>
Nell'esempio appena proposto, abbiamo autorizzato unicamente l'IP corrispondente al "localhost", tutti gli altri IP non
avranno la possibilità di veder soddisfatte le loro richieste.
Creazione dell'Index e gestione delle directory di Apache
Vi siete mai chiesti da cosa deriva il fatto che le HomePages della maggior parte dei siti internet siano rappresentate da
file chiamati "index.html", "index.php", ecc.?
Dietro a questa convenzione non ci sono motivazioni particolari se non la comodità dell'utente di non dover digitare per
intero una URL completa del filename ma di ricorrere ad una scorciatoia.
Dovendo accedere alla pagina:
http://www.dominio.it/index.php
non sarà quindi necessario scrivere l'intera URL ma basterà digitare:
http://www.dominio.it
del resto l'utente non è tenuto a sapere in che modo abbiamo chiamato la nostra Home e che estensione le abbiamo dato.
Così, per consuetudine si è deciso di chiamare "index" le pagine d'ingresso dei siti internet e di notificare questo dato
come predefinito al Web server in modo che la conversione dell'URL (da abbreviata ad estesa) fosse automatica ed
invisibile per l'utente.
Gli "index", vengono impostati tramite la direttiva DirectoryIndex nel file httpd.conf seguendo una sintassi molto
semplice che prevede la chiamata della direttiva seguita dal nome del file che dovrà svolgere le funzioni di "pagina di
default" della DocumentRoot.
Visualizzando il file di configurazione di Apache, troveremo sicuramente già impostate una lunga serie di possibili
pagine "index" complete di estensioni:
DirectoryIndex index.html index.shtml index.php
Naturalmente, nulla ci vieta di impostare a piacere il nome della nostra Home intervenendo sull'apposita voce.
Ad esempio potremmo decidere che la nostra pagina di default sia rappresentata dal file "pippo.html". In tal caso
dovremo impostare come segue:
DirectoryIndex pippo.html
Quando nella DocumentRoot non è presente una pagina "index", può verificarsi il fenomeno del Directory listings, in
questo caso infatti il Web server non trovando una pagina d'ingresso restituisce una lista delle risorse contenute
all'interno della directory.
Il Directory listings può essere voluto, come in quei siti che vengono messi in piedi semplicemente per consentire il
download di determinati file tramite link; diversamente il Directory listings può essere involontario perchè il
Webmaster non crea una pagina Home con uno dei nomi inseriti in httpd.conf, oppure, dimentica di passare il nome
della propria pagina home come parametro a DirectoryIndex. Naturalmente non verrà prodotto alcun elenco se la
necessaria direttiva non verrà abilitata.
In caso di Directory listings involontario, il problema sarà facilmente risolvibile inserendo nella DocumentRoot un
file (anche vuoto) recante un nome indicato in httpd.conf o aggiungendo un nome seguito da una estensione valida in
corrispondenza di DirectoryIndex.
Il Directory listings, produce quindi in all'alternativa all'HomePage un semplice documento Html recante una lista dei
file presenti nella DocumentRoot che saranno a cui si potrà accedere tramite link.
Questo fenomeno è reso possibile da un modulo chiamato "mod_autoindex".
La visualizzazione del "listing" è configurabile tramite alcune voci:
•
•
•
•
•
•
•
•
•
•
•
HeaderName: consente di indicare il nome di un file da visualizzare automaticamente come "header"
precedentemente alla lista delle risorse.
IndexOptions: permette di impostare la visualizzazione dei contenuti, compresa la possibilità di nascondere
particolari che non si vogliono rendere visibili.
IndexIgnore: consente di non mostrare certi tipi di file interni alla directory.
AddDescription: consente di descrivere determinati file.
Addalt: associa il tag "alt" a determinati file.
AddIcon: associa un'icona a determinati file.
AddAltByType: consente di associare il tag "alt" a determinati file sulla base della loro tipologia.
AddIconByType: consente di associare un'icona a determinati file sulla base della loro tipologia.
AddAltByEncoding: consente di associare il tag "alt" a determinati file sulla base del "MIME Encoding".
AddIconByEncoding: consente di associare un'icona a determinati file sulla base del "MIME Encoding".
DefaultIcon: indica un'icona predefinita da mostrare quando non è stata associata alcuna icona ad un tipo di
file.
Domini virtuali di Apache
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
oppure
Listen 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:
1.
2.
3.
4.
5.
6.
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.
Nel caso dei domini host-based, basati sul nome, il discorso è altrettanto semplice. Nel file httpd.conf dovremo
indicare innanzitutto l'indirizzo IP come parametro all'istruzione NameVirtualHost, dopo di che costruiremo un
container in cui dovremo indicare l'IP e il nome del ServerName:
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>
Errori su Apache e la loro gestione
L'errore più noto che può essere notificato da Apache è il 404, di cui abbiamo parlato in precedenza, il famoso "File not
found". Alla base di questa notifica vi è una dinamica abbastanza semplice e conosciuta:
1.
2.
3.
Il client vorrebbe accedere ad una risorsa è digita un'URL o clicca su un link per comunicare la richiesta.
Il Web server non trova la risorsa desiderata nel percorso indicato, registra l'errore nei "log" e invia una
notifica.
Il browser del client visualizza una pagina Html contenente la notifica dell'errore riscontrato.
La maggior parte delle risposte di Apache a richieste che non possono essere soddisfatte sono configurabili, è
sufficiente agire sulla direttiva ErrorDocument indicando la tipologia di errore ("numero", o "codice" di erore) e il
messaggio che si desidera venga visualizzato dall'utente. In alternativa è possibile redirigere il browser del client su una
pagina di notifica (tipo "error.html") in cui dare al navigatore maggiori informazioni, scusarsi del disagio arrecato o
fornire consigli su come reperire ugualmente la risorsa cercata.
Apache notifica principalmente due tipologie di errore: i 4XX, derivanti dalle richieste dei client e i 5XX dovuti alle
risposte dei Web server.
Tra i 4XX abbiamo:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
400: la richiesta non viene recepita da Apache in quanto incomprensibile (ad es: un errore sintattico nella
digitazione dell'URL).
401: essendo necessaria un'autorizzazione per accedere alla risorsa richiesta, coloro che non la possiedono non
potranno accedere ad essa.
402: la risorsa richiede un qualche forma di pagamento per poter essere accessibile.
403: Apache rifiuta di permettere l'accesso all'utente.
404: File Not Found
405: viene notificato un errore nel metodo con il quale viene effettuata la richiesta.
406: la risposta del server non è compatibile con la tipologia di richiesta.
407: la richiesta non può essere soddisfatta senza una previa autenticazione col proxy.
408: la richiesta del client si è fatta attendere oltre i tempi consentiti dalla Web Server ("Time Out").
409: notifica dei conflitti tra richiesta e risposta desiderata.
410: risposta non disponibile, neanche tramite un redirect.
411: non sarà possibile una risposta fino alla definizione del "Content-Length" (lunghezza richiesta).
412: prerequisito necessario alla soddisfazione della richiesta fallito.
413: la richiesta richiede una risorsa più grande di quella che Apache è in grado di processare.
414: URL troppo lunga proveniente dalla richiesta.
415: il formato della richiesta non è supportato.
Per quanto riguarda le notifiche 5XX, abbiamo invece appena sei voci:
•
•
•
•
•
•
500: errore interno al server, generalmente causato da un malfunzionamento del programma che mette a
disposizione il servizio.
501: server non implementato per poter soddisfare la tipologia di richiesta.
502: il gatway o il proxy collegati al server inviano una risposta errata.
503: la richiesta inviata è temporaneamente inesaudibile.
504: il gatway o il proxy collegati al server inviano una risposta andando oltre il tempo concesso prima della
notifica del "Time Out".
505: la versione del protocollo HTTP attraverso cui il client ha effettuato la richiesta non è supportata.
Opzioni avanzate di Apache: alias e redirect
Riassumendo e semplificando al massimo ciò di cui abbiamo parlato nel capitolo iniziale di questa guida, possiamo dire
che lo schema client >> server su cui si basa la Rete si configura come un continuo avvicendarsi di richieste e di
risposte gestite dai Web server come Apache. Il client richiede un'informazione e il Web server, continuamente in
"ascolto", si occupa di reperirla all'interno del computer server per poi inviarla al client.
Abbiamo così descritto uno schema "ideale" basato sulla dinamica domanda/risposta.
Questo schema, per essere sempre efficiente, deve poter prevedere e gestire le possibili eccezioni.
Sempre all'inizio di questa guida, abbiamo detto che seguendo il protocollo HTTP le richieste vengono inviate al
server tramite la digitazione di URL indicanti i percorsi che è necessario percorrere per accedere alle risorse richieste.
Ma cosa accade quando non vi è completa corrispondenza tra posizione delle informazioni ospitate nel server e URL?
Quali metodi vengono utilizzati per soddisfare comunque le richieste dei client?
Se noi digitiamo l'URL "http://www.dominio.ext/informazione.php" o clicchiamo sul link corrispondente, potrebbe
accadere che la risorsa che cerchiamo non si trovi più o non sia più interamente contenuta nel percorso indicato. Grazie
ad alcune funzionalità (le ormai note direttive) di Apache sarà comunque possibile soddisfare la richiesta. Stiamo
parlando dell'aliasing e del redirecting.
L'aliasing, basato sulla direttiva alias, non è altro che un processo di translazione delle URL. Il percorso indicato dal
client sarà valido anche per l'accesso ad informazioni allocate esternamente rispetto alla DocumentRoot.
L'aliasing è un sistema vantaggioso sia per il client che vede la sua richiesta soddisfatta in modo trasparente, sia per la
sicurezza del Web server che può gestire risorse al di fuori dello spazio accessibile dal Web rendendole quindi meno
esposte ad intenzioni malevole.
L'aliasing si ottiene passando alla direttiva alias sia l'URL che verrà digitata dal client per la richiesta, sia il percorso
reale che indica l'effettiva posizione delle risorse.
Quindi se una determinata risorsa, ad esempio un'immagine, verrà richiesta tramite l'URL http://www.sito.ext/img.gif e
quest'ultima si trova invece in una posizione esterna alla DocumentRoot "PATH/img.gif", basterà passare entrambe le
informazioni come parametri ad alias per ottenere il risultato desiderato.
La direttiva redirect è gestita dallo stesso "modulo" di alias, "mod_alias", ma si comporta in modo differente. Con
redirect, infatti, l'URL digitato tramite il client non verrà traslato ma sostituito da uno nuovo. Questo fenomeno è
molto noto presso i navigatori di Internet, spesso infatti capita di dirigerci verso una determinata pagina ed essere
rediretti verso altri documenti.
Per permettere il redirect, possiamo passare all'omonima direttiva tre parametri:
1.
2.
3.
status: indica il messaggio inviato al client all'atto del redirect; può essere "temp", quindi
temporaneo,"permanent", se definitivo o "gone" quando invece di un redirect si ha una situazione di
irreperibilità della risorsa.
prefisso (prefix URL): punto di partenza necessario per dar vita al redirect.
URL di destinazione.
Un esempio di redirect potrebbe essere questo:
Redirect temp
/nome_cartella
http://www.sito.ext/cartella_di_destinazione/