Il file httpd.conf di Apache

Apache è un Web Server open source utilizzato da circa il 46% dei siti in circolazione.

Il nome ufficiale è Apache HTTP Server ed è sviluppato dalla Apache Software Foundation.

Si tratta di uno dei software più affidabili in circolazione ed esiste dal lontano 1995.

Tra le aziende di alto profilo che utilizzano questo Server troviamo General Electric, IBM, Cisco, SalesForce, Adobe, VMware, LinkedIn, Facebook, Xerox, eBay, Hewlett-Packard, Siemens e tantissime altre ancora.

Il compito di Apache è quello di stabilire un collegamento tra il Server ed i browser degli utenti che intendono visitare un sito web.

È un software cross-platform ed è in grado di operare sia su Server Unix che Windows.

Il Web Server Apache dispone di moduli che aggiungono funzioni ulteriori al software: MPM (gestione modalità multi-processing), mod_ssl per abilitare il supporto SSL v3 e TLS, caching, URL rewriting e così via.

La configurazione del Web Server è possibile tramite il file .htaccess.

Apache viene sostanzialmente configurato inserendo le direttive all’interno di file di configurazione. 

Fra questi, il file di configurazione principale è solitamente denominato httpd.conf e si trova all’altezza di questo percorso: etc/httpd/conf/httpd.conf

Il file httpd.conf contiene molte istruzioni di configurazione e solitamente è necessario apportare solo poche modifiche a questo file per rendere operativo un sito web.

Prima di modificare httpd.conf si consiglia comunque di fare una copia del file originale.

Creando un backup, infatti, è possibile rimediare a eventuali errori commessi durante la modifica di questo file di configurazione.

Se viene commesso un errore e il Web Server non dovesse funzionare correttamente, è necessario rivisionare innanzitutto i precedenti passaggi effettuati in httpd.conf in modo tale da verificare che non vi siano errori di battitura.

Successivamente è necessario controllare il log d’errore del Server: /var/log/httpd/error_log.

Il log d’errore puó essere non semplice da interpretare, dipende infatti dal nostro livello di esperienza.

Tuttavia, se avete dei problemi, le ultime entry nel log d’errore, dovrebbero fornire informazioni utili inerenti a ció che é accaduto.

Di seguito una breve carrellata delle direttive incluse in httpd.conf

10.5.2. ServerRoot

ServerRoot è la directory di livello superiore che contiene i file del Server.

Entrambi i Server (sicuro e non sicuro) sono impostati per utilizzare ServerRoot di “/etc/httpd“.

10.5.3. PidFile

PidFile nomina il file nel quale è memorizzato il PID (ID del processo).

Per impostazione predefinita, il PID viene memorizzato nella directory /var/run/httpd.pid.

10.5.4. Timeout

Timeout definisce invece il tempo necessario al Server per la ricezione e la trasmissione durante la comunicazione. 

Timeout è impostato per un’attesa di 300 secondi, ossia il tempo adeguato per la maggior parte delle situazioni.

10.5.5. KeepAlive

KeepAlive stabilisce se il Server permetterà più di una richiesta per connessione e puó essere utilizzato per evitare che un client utilizzi troppe risorse del Server.

Per default, Keepalive è impostato su off.

Se viene impostato su on e il Server è particolarmente occupato, Apache è in grado di produrre rapidamente il numero più elevato di processi figli.

In tal caso, il Server diventa piuttosto lento.

Se abilitate Keepalive, è buona idea avere una impostazione su valori bassi di KeepAliveTimeout e controllate i file di log /var/log/httpd/error_log sul Server.

Questo log vi consente di sapere se il Server presenta una carenza di processi figli.

10.5.6. MaxKeepAliveRequests

La direttiva imposta il numero massimo di richieste accettate su ogni connessione persistente.

Il team di sviluppo di Apache consiglia di impostare un valore alto, al fine di migliorare le prestazioni del Server. 

MaxKeepAliveRequests è impostato per default su 100, un valore che si adatta alla maggior parte delle possibili situazioni.

10.5.7. KeepAliveTimeout

KeepAliveTimeout imposta il numero di secondi durante il quale il Server attende una nuova richiesta prima di chiudere la connessione.

Una volta ricevuta la richiesta, si applica invece la direttiva Timeout. 

KeepAliveTimeout é impostato per default su 15 secondi.

10.5.8. IfModule

I tag <IfModule> e </IfModule> creano una sezione attivata solo se il modulo specificato é montato.

Le direttive presenti all’interno della sezioneIfModule vengono elaborate solo tramite una di queste due condizioni.

Il modulo specificato all’interno del tag di inizio <IfModule> è stato caricato, oppure se un punto esclamativo [!] appare prima del nome del modulo, le direttive sono elaborate solo se il modulo specificato nel tag <IfModule>, non è caricato.

10.5.9. Direttive MPM specifiche del pool di Server

Con il Server HTTP Apache 2.0, la responsabilità per la gestione delle caratteristiche del gruppo del Server, ricade su di un gruppo di moduli chiamato MPM.

Le caratteristiche del gruppo del Server differisce a seconda di quale MPM viene usato.

Per questa ragione, è necessario una sezione IfModule per definire il gruppo di Server per l’MPM in uso.

Per default, Server HTTP Apache 2.0 definisce il pool di Server per gli MPM prefork e worker.

Il seguente è un elenco di direttive trovate all’interno delle sezioni MPM specifiche del gruppo di Server.

10.5.9.1. StartServers

La direttiva StartServers imposta il numero di processi Server che devono essere creati all’avvio.

Poichè il Web Server elimina o crea dinamicamente i processi Server in funzione del carico del traffico, non è necessario cambiare questo parametro.

Il vostro Web Server è impostato per far partire all’avvio 8 processi Server, per l’MPM prefork e 2 per l’MPM worker.

10.5.9.2. MaxRequestsPerChild

MaxRequestsPerChild imposta il numero massimo di richieste che ogni processo figlio può gestire prima di essere eliminato.

Lo scopo principale di MaxRequestsPerChild è quello di evitare che un processo rimanga in esecuzione troppo a lungo, occupando un’eccessiva quantità di memoria.

Il default MaxRequestsPerChild per l’MPM prefork è 4000 e per l’MPM worker è 0.

10.5.9.3. MaxClients

MaxClients imposta un limite per il numero totale di processi Server, di client connessi contemporaneamente, in esecuzione allo stesso momento.

Lo scopo principale per questa direttiva è di prevenire un crash del sistema operativo da parte di Server HTTP Apache.

Si consiglia di mantenere alto questo valore, per Server molto occupati.

Il default del Server è impostato su 150, questo senza tener conto dell’MPM in uso.

Tuttavia é consigliato che il valore di MaxClients ecceda 256 quando si usa l’MPM prefork.

10.5.9.4. MinSpareServers e MaxSpareServers

Questi valori vengono usati con l’MPM prefork.

Essi determinano come il Server HTTP Apache si adatti dinamicamente al carico di lavoro mantenendo un numero appropriato di processi di riserva del Server a seconda del traffico.

Viene eseguita la verifica del numero di Server in attesa di richiesta che vengono eliminati se superano il valore di MaxSpareServers oppure vengono creati se sono inferiori al valore di MinSpareServers.

Il valore di default di MinSpareServers è 5, mentre quello di MaxSpareServers è 20.

Queste impostazioni di default dovrebbero essere adatte alla maggior parte delle situazioni possibili.

Si consiglia di non aumentare troppo il valore di MinSpareServers, poichè si rischia di sovraccaricare il Server quando il traffico non è eccessivo.

10.5.9.5. MinSpareThreads e MaxSpareThreads

Questi valori vengono usati con l’MPM worker.

Essi determinano come il Server HTTP Apache si adatti dinamicamente al carico di lavoro mantenendo un numero appropriato di processi di riserva del Server a seconda del traffico.

Viene eseguita la verifica del numero dei thread del Server in attesa di una richiesta, ed elimina alcuni di essi se il loro numero è maggiore del valore di MaxSpareThreads, alternativamente vengono creati altri thread se il loro numero risulta essere inferiore a MinSpareThreads.

Il valore di default di MinSpareThreads è 25, mentre quello di MaxSpareThreads è 75.

Queste impostazioni di default sono adatte alla maggior parte delle situazioni possibili.

Il valore per MaxSpareThreads deve essere maggiore o uguale alla somma di MinSpareThreads e ThreadsPerChild altrimenti il Server HTTP Apache lo corregge automaticamente.

10.5.9.6. ThreadsPerChild

Questo valore viene usato solo con l’MPM worker.

Esso imposta il numero di trhead all’interno di ogni processo figlio.

Il valore di default per questa direttiva è 25.

10.5.10. Listen

Il comando Listen specifica su quale porta il Web Server accetta le richieste in entrata.

Per default il Server HTTP Apache attende le richieste sulla porta 80 per la comunicazione Web non sicura e (nel /etc/httpd/conf.d/ssl.conf che definiscono i Server sicuri) sulla porta 443 per la comunicazione Web sicura.

Se impostate il Server HTTP Apache in ascolto su una porta inferiore alla 1024, solo l’utente root è in grado di iniziarlo.

Per le porte superiori alla 1024, httpd può essere iniziato come un utente normale.

La direttiva Listen può inoltre essere usata per specificare particolari indirizzi IP dai quali il Server accetta le connessioni.

10.5.11. Include

Include consente ad altri file di configurazione di essere inclusi in fase di runtime.

Il percorso di questi file di configurazione può essere assoluto o relativo rispetto a ServerRoot.

ImportanteImportante
 Perchè il Server utilizzi moduli in singoli pacchetti, come mod_ssl, mod_perl e php, la direttiva riportata di seguito deve trovarsi in Section 1: Global Environment di http.conf:Include conf.d/*.conf

10.5.12. LoadModule

LoadModule è utilizzata per caricare i moduli Dynamic Shared Object (DSO).

L’ordine di caricamento dei moduli non è più importante con Server HTTP Apache 2.0.

10.5.13. ExtendedStatus

La direttiva ExtendedStatus controlla se Apache genera informazioni di base (off) sullo stato del Server oppure informazioni dettagliate (on), quando viene chiamato server-status. Il gestore Server-status viene chiamato usando i tag Location.

10.5.14. IfDefine

I tag IfDefine utilizzano le direttive di configurazione specificate al loro interno se nel primo tag la definizione “test” presente nel tag IfDefine risulta essere vera.

Le direttive vengono ignorate se il test è falso.

Il test nei tag IfDefine è il nome di un parametro (per esempio, HAVE_PERL).

Se il parametro è definito, ossia viene fornito come argomento del comando d’avvio del Server, allora il test è vero.

In questo caso, quando il Web Server viene attivato, il test è vero e le direttive contenute nei tag IfDefine vengono applicate.

10.5.15. SuexecUserGroup

La direttiva SuexecUserGroup, la quale viene originata dal modulo mod_suexec, permette la specificazione dei privilegi di esecuzione dell’utente e del gruppo per i programmi CGI.

La richieste non-CGI vengono processate con l’utente ed il gruppo specificato nelle direttive User e Group.

NotaNota Bene
 La direttiva SuexecUserGroup sostituisce la configurazione Server HTTP Apache 1.3 nell’uso delle direttive User e Group, all’interno della configurazione delle sezioni di VirtualHosts.

10.5.16. User

La direttiva User imposta il nome utente del processo Server e determina quale file il Server é in grado di accedere.

Qualsiasi file non accessibile per questo utente, risultano inaccessibili anche per i client che si collegano al Server HTTP Apache.

L’utente di default per User è apache.

Questa direttiva è sconsigliata per la configurazione degli host virtuali.

NotaNota Bene
 Per ragioni di sicurezza, l’Server HTTP Apache non funzionerá come utente root.

10.5.17. Group

Specifica il nome del gruppo dei processi del Server HTTP Apache.

Questa direttiva è sconsigliata per la configurazione degli host virtuali.

Per default Group è impostato su apache.

10.5.18. ServerAdmin

Imposta la direttiva ServerAdmin per l’indirizzo di posta elettronica dell’amministratore del Web Server.

Questo indirizzo di posta elettronica appare nei messaggi di errore delle pagine Web generate dal Server, in modo che gli utenti possano riferire eventuali problemi inviando un messaggio all’amministratore del Server.

Per default, ServerAdmin é impostato su root@localhost.

Un modo comune per impostare ServerAdmin è di impostarlo su webmaster@your_domain.com.

Una volta impostato, assegnate dunque l’alias webmaster alla persona responsabile del Web Server nel file /etc/aliases, ed eseguire /usr/bin/newaliases.

10.5.19. ServerName

ServerName specifica un hostname e un numero di porta (corrispondenti alla direttiva Listen) per il Server.

Il ServerName non deve necessariamente corrispondere al nome reale dell’hostname.

Per esempio, il Web Server puó essere www.example.com ma l’hostname del Server è foo.example.com.

Il valore specificato in ServerName deve essere un Domain Name Service (DNS) valido, che può essere risolto dal sistema — evitate di inserire nomi inventati.

Di seguito viene riportato un esempio di direttiva ServerName:

ServerName www.example.com:80

Se specificate un ServerName, accertatevi che nel file /etc/hosts esista una corrispondenza tra indirizzo IP e nome del Server.

10.5.20. UseCanonicalName

Quando impostato su on, questa direttiva configura il Server HTTP Apache in modo tale da essere usato come riferimento usando il valore specificato nelle direttive ServerName e Port.

Quando UseCanonicalName é impostato su off, il Server userá invece il valore usato dal client richiedente.

UseCanonicalName é impostato per default su off.

10.5.21. DocumentRoot

DocumentRoot è la directory che contiene la maggior parte dei file HTML in risposta alle richieste.

La directory DocumentRoot di default, per entrambi i Web Server, sicuro e non sicuro, è la directory /var/www/html. Per esempio, il Server può ricevere una richiesta per il documento seguente:

http://example.com/foo.html

Il Server cercherà il file riportato di seguito nella directory di default:

/var/www/html/foo.html

10.5.22. Directory

I tag <Directory /path/to/directory> e </Directory> creano ció che viene riferito come una sezione, usata per raggruppare un insieme di direttive di configurazione da applicare solo a una particolare directory e a tutte le sue sottodirectory.

Tutte le direttive applicabili a una directory possono essere usate all’interno dei tag Directory.

Per default, alla directory root (/), vengono applicati i parametri più restrittivi, tramite le direttive Options e AllowOverride.

Sotto questa configurazione, alle directory che necessitano di impostazioni meno restrittive devono essere assegnate in modo esplicito quelle impostazioni.

Nella configurazione predefinita, un’altra Directory é configurata per il DocumentRoot la quale assegna un minor numero di parametri rigidi all’albero della directory in modo tale che il Server HTTP Apache possa accedere ai file presenti.

La sezione Directory puó essere usata per configurare delle directory cgi-bin aggiuntive per applicazioni di tipo Server-Side, al di fuori della directory specificata nella direttiva ScriptAlias.

Per fare questo, la sezione Directory deve impostare l’opzione ExecCGI per quella directory.

Per esempio, se gli script sono posizionati in /home/my_cgi_directory, aggiungere Directory al file httpd.conf:

<Directory /home/my_cgi_directory> Options +ExecCGI </Directory>

Successivamente, la direttiva AddHandler non deve essere commentata per identificare i file con l’estensione .cgi come script CGI.

Per fare ció, i permessi per gli script CGI, e l’intero percorso per gli script, deve essere impostato su 0755.

10.5.23. Options

La direttiva Options controlla le caratteristiche dei Server disponibili in una particolare directory.

Per esempio, con i parametri restrittivi specificati per la directory root, la direttiva Options è impostata solo per FollowSymLinks.

Non sono abilitate altre caratteristiche, ad eccezione di quella che consente al Server di seguire i link simbolici nella directory root.

Per default, nella directory DocumentRoot, la direttiva Options è configurata per contenere Indexes, Includes e FollowSymLinks. 

Indexes permette al Server di generare un elenco di directory per una directory, se non è specificata alcuna direttiva DirectoryIndex (per esempio: index.html). 

FollowSymLinks consente al Server di seguire i link simbolici in questa directory.

NotaNota Bene
 Le istruzioni Options della sezione di configurazione del Server principale, devono essere replicate individualmente su ogni sezione delVirtualHost.

10.5.24. AllowOverride

La direttiva AllowOverride consente di stabilire se Options piò essere ridefinito dalle dichiarazioni presenti in un file .htaccess.

Per default, sia la directory root, sia la directory DocumentRoot sono impostate per non permettere di sovrascrivere .htaccess.

10.5.25. Order

La direttiva Order controlla l’ordine con il quale le direttive allow e deny sono valutate.

Il Server viene configurato per valutare le direttive Allow prima delle direttive Deny per la direttiva DocumentRoot.

10.5.26. Allow

Allow specifica quale client può accedere a una determinata directory.

Il client può essere all, un nome di dominio, un indirizzo IP, una parte dell’indirizzo IP, una coppia rete/maschera di rete e così via.

La directory DocumentRoot è configurata per Allow o permettere l’accesso da all ossia da tutti i client.

10.5.27. Deny

Deny funziona esattamente come allow, ma specifica quali accessi negare. Per default DocumentRoot non è configurata per Deny o negare alcuna richiesta.

10.5.28. UserDir

UserDir è la sottodirectory all’interno di ogni home directory dell’utente, in cui vanno collocati i file HTML personali che il Web Server utilizza.

Questa direttiva é impostata per default su disable.

Per default, la sottodirectory è public_html.

Per esempio, il Server può ricevere la richiesta seguente:

http://example.com/~username/foo.html

Il Server cerca il file:

/home/username/public_html/foo.html

Nell’esempio precedente /home/username è la home directory dell’utente (ovviamente il percorso di default della directory home può essere diverso sul vostro sistema).

Assicuratevi che i permessi della home directory dell’utente siano corretti.

L’impostazione esatta è 0711. I bit di lettura (r) e di esecuzione (x) devono essere impostati nelle directory public_html dell’utente (anche 0755 funziona correttamente).

I file presenti nelle directory public_html devono essere impostati almeno su 0644.

10.5.29. DirectoryIndex

La direttiva DirectoryIndex è la pagina predefinita che viene restituita al client quando un utente richiede l’indice di una directory, specificando uno slash (/) dopo il nome della directory.

Quando un utente richiede la pagina http://esempio/questa_directory/, riceve la pagina DirectoryIndex, se presente, o un elenco di directory generato dal Server.

Il default per DirectoryIndex è index.html ed il tipo di mappa index.html.var.

Il Server cerca di individuare uno di questi file, restituendo il primo file trovato.

Se non trova alcun file, e per questa directory è impostata la direttiva Options Indexes, il Server genera e restituisce un elenco delle subdirectory e dei file contenuti nella directory in formato HTML, a meno che il contenuto elencato della directory, non viene impostato su off.

10.5.30. AccessFileName

AccessFileName attribuisce un nome al file che il Server utilizza per accedere alle informazioni di controllo in ogni directory.

Il default é .htaccess.

Immediatamente dopo la direttiva AccessFileName, una serie di tag Files controllano l’accesso ai file che iniziano con .ht.

Per ragioni di sicurezza queste direttive negano l’accesso Web a qualunque file .htaccess (o a qualunque altro file che inizi con .ht).

10.5.31. CacheNegotiatedDocs

Per default, il Web Server chiede ai Server Proxy di non conservare nella cache i documenti trasmessi in base al contenuto (ovvero quei documenti che potrebbero essere modificati col tempo o mediante l’inserimento del richiedente).

Se CacheNegotiatedDocs é impostato su on, questa funzione viene disabilitata e i Server Proxy sono autorizzati a conservare i documenti nella cache.

10.5.32. TypesConfig

TypesConfig definisce il nome del file che imposta le mappature dell’elenco predefinito dei tipi MIME (le estensioni dei file per i tipi di contenuto).

Il file TypesConfig di default è /etc/mime.types. Invece di modificare questo file, si consiglia di aggiungere i tipi MIME tramite la direttiva AddType.

10.5.33. DefaultType

DefaultType definisce il tipo MIME di default per i documenti non riconosciuti. Il default é text/plain.

10.5.34. HostnameLookups

HostnameLookups puó essere impostato su on, off o double.

Se HostnameLookups é impostato su on, il Server automaticamente resolve l’indirizzo IP per ogni collegamento.

Risolvere l’indirizzo IP significa che il Server effettua uno o piú collegamenti ad un Server DNS, aggiungendo l’elaborazione overhead.

Se HostnameLookups é impostato su double, il Server effettua un look up DNS inverso doppio, aggiungendo una maggiore elaborazione overhead.

Per conservare risorse sul Server, per default impostate HostnameLookups su off.

Se desiderate vedere gli hostname nei vostri file di log, dovreste eseguire uno dei tanti tool di analisi dei log in grado di effettuare lookup DNS in modo più efficiente e su scala più ampia nel momento in cui ruotate i file di log.

10.5.35. ErrorLog

ErrorLog specifica il nome del file dove vengono registrati tutti gli errori del Server.

Per default, il file di log degli errori è /var/log/httpd/error_log.

10.5.36. LogLevel

LogLevel definisce il livello di dettaglio dei messaggi d’errore registrati nel file di registrazione. 

LogLevel può essere impostato (dal più dettagliato al meno dettagliato) suemerg, alert, crit, error, warn, notice, info o debug.

Il LogLevel di default è warn.

10.5.37. LogFormat

La direttiva LogFormat configura il formato dei diversi file log del Web Server.

L’attuale LogFormat che verrà utilizzata dipende dalle impostazioni attribuite nella direttiva CustomLog.

Le seguenti, sono delle opzioni del formato se la direttiva CustomLog é impostata su combined:%h (indirizzo IP dell’host remoto oppure hostname)

Elenca l’indirizzo IP remoto del client richiedente.

Se HostnameLookups é impostato su on, l’hostname del client, se disponibile dal DNS, viene registrato.%l (rfc931)

Non usato. Un trattino [-] viene visualizzato nel file log per questo campo.%u (utente autenticato)

Elenca il nome utente dell’utente memorizzato se è necessario eseguire l’autenticazione.

Generalmente non é usato, quindi viene visualizzato un trattino [-] nel file log per questo campo.%t (data)

Elenca la data e l’orario della richiesta.%r (riga di richiesta)

Elenca la riga di richiesta esattamente come arriva dal browser o dal client.%s (stato)

Elenca il codice dello stato HTTP ritornato all’host del client.%b (byte)

Elenca la misura del documento.%\”%{Referer}i\” (referenza)

Elenca l’URL della pagina web riferita all’host del client per il Web Server.%\”%{User-Agent}i\” (utente-agent)

Elenca il tipo di browser web che effettua la richiesta.

10.5.38. CustomLog

CustomLog indica il file di log e il suo formato.

Nella configurazione di default, il file di log é registrato sul file /var/log/httpd/access_log.

Il formato CustomLog di default é il formato del file log combined come di seguito riportato:

remotehost rfc931 user date “request” status bytes referrer user-agent

10.5.39. ServerSignature

La direttiva ServerSignature aggiunge una linea contenente la versione del Server HTTP Apache e il ServerName del Server host a qualsiasi documento generato dal Server stesso (per esempio, i messaggi di errore rispediti ai client).

Per default, ServerSignature è impostato su on.

Potete impostarlo anche su off o su EMail. 

EMail, aggiunge un tag HTML mailto:ServerAdmin alla linea della firma delle risposte generate automaticamente.

10.5.40. Alias

L’impostazione Alias consente alle directory che si trovano al di fuori di DocumentRoot di essere accessibili.

Qualunque URL che termina con l’alias viene automaticamente risolto all’interno del percorso dell’alias.

Per default, é giá impostata un alias per la directory icons/.

Un Web Server puó accedere alla directory icons/, ma la suddetta directory non é presente nel DocumentRoot.

10.5.41. ScriptAlias

La direttiva ScriptAlias definisce dove sono localizzati gli script CGI.

Normalmente è meglio non lasciare gli script CGI all’interno di DocumentRoot, poiché potrebbero essere visualizzati come documenti di testo.

Per questa ragione, una directory speciale, esterna alla directory DocumentRoot contenente gli eseguibili e gli script del Server, é ideata dalla direttiva ScriptAlias.

Questa directory é conosciuta come cgi-bin ed è impostata per default su /var/www/cgi-bin/.

É possibile creare delle directory per conservare gli eseguibili esternamente alla directory cgi-bin.

10.5.42. Redirect

Quando una pagina Web viene spostata, la direttiva Redirect può essere utilizzata per rimappare il vecchio URL con quello nuovo.

Il formato è il seguente:

Redirect /<old-path>/<file-name> http://<current-domain>/<current-path>/<file-name>

In questo esempio, sostituire <percorso-vecchio> con le informazioni del percorso vecchio per <nome-file> e <dominio-corrente> e <percorso-corrente> con le informazioni correnti del dominio e percorso per <nome-file>.

In questo esempio, qualsiasi richiesta per <nome-file> nella vecchia posizione, é automaticamente ridiretta nella nuova posizione.

Per tecniche piú avanzate di ridirezione, usare il modulo mod_rewrite incluso con il Server HTTP Apache.

10.5.43. IndexOptions

IndexOptions controlla l’aspetto degli elenchi delle directory generate dal Server, aggiungendo icone e descrizioni dei file e così via.

Se è impostata la direttiva Options Indexes, il Web Server genera un elenco delle directory quando lo stesso riceve una richiesta HTTP per una directory senza un indice.

Innanzitutto, il Web Server cerca nella directory uno dei file specificati con la direttiva DirectoryIndex (di solito, index.html).

Se non viene trovato un file index.html, Server HTTP Apache crea una directory HTML che elenca le directory richieste. L’aspetto di questa directory é controllato, in parte, dalla direttiva IndexOptions.

La configurazione di default imposta su on FancyIndexing.

Questo significa che un utente puó riordinare un elenco della directory, facendo clic sulle intestazioni della colonna.

Con un altro clic sulla stessa intestazione si inverte l’ordine da ascendente a discendente. 

FancyIndexing visualizza icone diverse per file diversi, a seconda dell’estensione.

Se utilizzate la direttiva AddDescription e attivate FancyIndexing, viene visualizzata una breve descrizione dei file nell’elenco delle directory generato dal Server.

IndexOptions presenta diversi parametri che possono essere impostati per controllare l’aspetto delle directory generate dal Server.

I parametri IconHeight e IconWidth, necessitano l’inclusione HTML delle tag HEIGHT e WIDTH da parte del Server, per le icone delle pagine Web generate dal Server stesso.

Il parametro IconsAreLinks combina l’icona grafica con il link HTML, il quale contiene il target del link URL.

10.5.44. AddIconByEncoding

Questa direttiva associa un’icona a un particolare tipo di file secondo la codifica MIME negli elenchi di directory generati dal Server.

Per esempio, il Web Server mostra, per default, l’icona compressed.gif accanto ai file di tipo x-compress e x-gzip negli elenchi della directory generati dal Server.

10.5.45. AddIconByType

Questa direttiva specifica il nome dell’icona da visualizzare accanto al file con il tipo MIME negli elenchi delle directory generati dal Server.

Per esempio, il vostro Server è impostato per visualizzare l’icona text.gif accanto al file con il tipo MIME di testo text, negli elenchi della directory generati dal Server.

10.5.46. AddIcon

AddIcon specifica l’icona da visualizzare negli elenchi delle directory generati dal Server per certi tipi di file o per i file che hanno determinate estensioni.

Per esempio, il vostro Web Server è impostato in modo da mostrare l’icona binary.gif per i file con estensione .bin o .exe.

10.5.47. DefaultIcon

DefaultIcon specifica l’icona da visualizzare negli elenchi delle directory generati dal Server per i file che non hanno altre icone specificate.

Il file d’immagine unknown.gif é il default.

10.5.48. AddDescription

Quando utilizzate FancyIndexing come parametro IndexOptions, la direttiva AddDescription puó essere utilizzata per visualizzare le descrizioni specificate dall’utente, per certi file o tipi di file, negli elenchi della directory generati dal Server.

La direttiva AddDescription supporta l’elenco di file specifici, espressioni della wildcard, oppure estensioni del file.

10.5.49. ReadmeName

ReadmeName definisce il nome del file che viene aggiunto alla fine degli elenchi delle directory generati dal Server.

Il Web Server cercherà prima di includere il file come documento HTML, poi come file di testo.

Nella configurazione di default, ReadmeName è impostato su README.html.

10.5.50. HeaderName

HeaderName specifica il nome del file (se presente nella directory) che viene inserito all’inizio degli elenchi delle directory generati dal Server. Come per ReadmeName, il Server cerca, se possibile, di includere il file in formato HTML o altrimenti in formato di testo.

10.5.51. IndexIgnore

IndexIgnore elenca le estensioni del file, parti di nomi di file, espressioni wildcard o nomi di file completi.

Il Web Server non include alcun file che corrisponda a quei parametri negli elenchi delle directory generati dal Server.

10.5.52. AddEncoding

AddEncoding definisce le estensioni dei file che hanno una particolare codifica. 

AddEncoding può essere utilizzato anche per indicare ai browser di decomprimere alcuni file mentre vengono scaricati.

10.5.53. AddLanguage

AddLanguage associa l’estensione di un file a una particolare lingua.

Questa direttiva è particolarmente utile per Server HTTP Apache, quando il Server restituisce un documento in base alla lingua di preferenza del client specificata nel browser.

10.5.54. LanguagePriority

LanguagePriority vi permette di stabilire una lingua prioritaria in caso il browser WEb del client non ha impostato alcuna lingua di preferenza.

10.5.55. AddType

Usare la direttiva AddType per definire o sovrascrivere un tipo MIME di default e coppie di estensione del file.

Nell’esempio seguente la direttiva indica a Server HTTP Apache di riconoscere l’estensione del file .tgz.

AddType application/x-tar .tgz

10.5.56. AddHandler

AddHandler mappa l’estensione di un file per handler specifici.

Per esempio, l’handler cgi-script può essere utilizzato in associazione con l’estensione .cgi per trattare un file che termina con .cgi automaticamente come script CGI.

Il seguente é un esempio di direttiva AddHandler per l’estensione .cgi.

AddHandler cgi-script .cgi

Questa direttiva abilita CGI a funzionare esternamente cgi-bin, in qualsiasi altra directory sul Server che possiede l’opzione ExecCGI all’interno del “cotainer” delle directory.

Oltre agli script CGI, il vostro Web Server utilizza anche AddHandler per elaborare gli HTML e i file imagemap analizzati dal Server.

10.5.57. Action

Action specifica un tipo di contenuto MIME e una coppia di script CGI, in questo modo, quando viene richiesto un file di questo tipo, viene eseguito un particolare script CGI.

10.5.58. ErrorDocument

La direttiva ErrorDocument associa un codice di risposta HTTP con un messaggio o un URL da ritornare al client.

Per default, il Web Server emette un output di un messaggio di errore quando si verifica un errore.

La direttiva ErrorDocument forza il Web Server ad emettere un messaggio personalizzato o una pagina.

ImportanteImportante
 Per essere valido, il messaggio deve deve essere racchiuso in un paio di virgolette [“].

10.5.59. BrowserMatch

La direttiva BrowserMatch consente al server di definire le variabili di ambiente e/o le azioni sulla base del campo dell’intestazione HTTP User-Agent, che identifica il browser del client.

Per default, il vostro server Web utilizza BrowserMatch per negare le connessioni a determinati browser con problemi noti e anche per disabilitare i keepalive e i comandi di annullamento delle intestazioni HTTP per i browser che hanno problemi con queste azioni.

10.5.60. Location

I tag <Location> e </Location> vi consentono di specificare il controllo dell’accesso in base all’URL.

Per esempio, per abilitare gli utenti al collegamento dall’interno del dominio del Server, per vedere lo stato dei riport, usare le seguenti direttive:

<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from <.example.com> </Location>

Dovete sostituire <.example.com> con il nome del dominio di secondo livello.

Se desiderate fornire report sulla configurazione del Server (inclusi i moduli installati e le direttive di configurazione) da richiedere all’interno del vostro dominio, usare le seguenti direttive:

<Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from <.example.com> </Location>

Ed ancora, sostituite <.example.com> con il nome del dominio di secondo livello per il Web Server.

10.5.61. ProxyRequests

Per configurare il Server HTTP Apache in modo da comportarsi come un Server Proxy, rimuovere (#) dall’inizio della riga <IfModule mod_proxy.c>, le ProxyRequests, e ogni riga nella sezione <Proxy>.

Impostare la direttiva ProxyRequests su On, e impostare quale dominio è abilitato all’accesso del Server, nella direttiva Allow from della sezione <Proxy>.

10.5.62. Proxy

I tag <Proxy *> </Proxy> creano un “cotainer” il quale racchiude un gruppo di direttive di configurazione che vengono applicate solo al Server Proxy.

Molte direttive applicabili ad una directory possono essere usate all;interno dei tag <Proxy>.

10.5.63. Direttive della cache

Un numero di direttive commentate della cache, sono fornite dal file di configurazione di default del Server HTTP Apache.

In molti casi non commentare queste righe, per fare ció é sufficiente rimuovere semplicemente il carattere (#) dall’inizio della riga.

Quanto segue, rappresenta un elenco di alcune delle direttive piú importanti relative alla cache.

  • 5CacheEnable — Specifica se la cache è un disco, una memoria, o un file descriptor cache. Per default CacheEnable configura una cache a disco per le URL su o al di sotto di /.
  • CacheRoot — configura il nome della directory che conterrà i file memorizzati nella cache. La direttiva CacheRoot di default è la directory /var/cache/httpd.
  • CacheSize — Specifica quanto spazio in kilobyte, puó essere usato dalla cache. Il default CacheSize é 5 KB.

Il seguente è un elenco di alcune delle direttive comuni inerenti alla cache.

  • CacheMaxExpire — Specifica per quanto tempo i documenti HTML vengono trattenuti (senza un ricaricamento dal Web Server originario) nella cache. Il default é 24 ore 86400 secondi).
  • CacheLastModifiedFactor — si occupa della creazione di una data di scadenza per un documento che non ne possieda una propria. Il valore di default per CacheLastModifiedFactor è 0.1. Questo significa che la data di scadenza per questi documenti è pari a 1/10 della quantità di tempo trascorso dall’ultima modifica.
  • CacheDefaultExpire — Specifica in ore la scadenza di un documento ricevuto tramite un protocollo che non supporta la data di scadenza. La configurazione di default è 1 ora (3600 seconds).
  • NoProxy — Specifica un elenco separato da uno spazio di sottoreti, indirizzi IP, domini, o di host i quali contenuti non sono stati conservati nella cache; questa impostazione è molto utile per siti Intranet.

10.5.64. NameVirtualHost

La direttiva NameVirtualHost associa un indirizzo IP e un numero della porta, se necessario, per ogni host virtuale basato sul nome.

La configurazione degli host virtuali basati sul nome, abilita un Server HTTP Apache a servire diversi domini senza usare indirizzi IP multipli.

NotaNota Bene
 Ogni host virtuale basato sul nome funzionerà solo con connessioni HTTP non sicure, poichè non potete utilizzare host virtuali basati sui nomi con un Server sicuro. In questo secondo caso, dovreste utilizzare host virtuali basati su indirizzi IP.

Per abilitare un host virtuale basato sul nome, decommentate la direttiva NameVirtualHost e aggiungete l’indirizzo IP corretto.

Successivamente inserite delle sezioni VirtualHost aggiuntive per ogni host virtuale come richiesto dalla vostra configurazione..

10.5.65. VirtualHost

I tag <VirtualHost> e </VirtualHost> creano una sezione riportando le caratteristiche dell’host virtuale.

La sezione <VirtualHost> accetta molte direttive di configurazione.

Una sezione VirtualHost commentata è presente in httpd.conf, il quale mostra il set minimo di direttive di configurazione necessario per ogni host virtuale.

NotaNota Bene
 La sezione dell’host virtuale SSL di default è stata spostata nel file /etc/httpd/conf.d/ssl.conf.

10.5.66. Direttive di configurazione per SSL

Le direttive nel file /etc/httpd/conf.d/ssl.conf possono essere configurate per abilitare comunicazioni Web sicure utilizzando SSL e TLS.

10.5.66.1. SetEnvIf

SetEnvIf imposta le variabili dell’ambiente basate sulle intestazioni di collegamenti in entrata. 

Non è solamente una direttiva SSL, anche se presente nel file /etc/httpd/conf.d/ssl.conf.

Il suo scopo è quello di disabilitare i keepalive HTTP e di permettere al protocollo SSL di chiudere la connessione senza un messaggio di avvertimento da parte del browser client.

Questa impostazione è necessaria per alcuni browser che non chiudono in modo affidabile la connessione SSL.