Gestione dinamica e metodi di controllo
12/05/2005
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:
- 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:
- 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.
© Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.
Stampa :: Torna alla Home