Capitolo 12. Configurazione del Secure Server

La configurazione di default del Red Hat Linux Apache/SSL Server è adatta per la maggior parte degli utenti. Non dovreste mai cambiare le direttive di configurazione di Apache. Se volete modificare le opzioni della configurazione di default, dove conoscere quali sono le opzioni e dove si trovano. Questo capitolo descrive le opzioni di configurazione di default del Secure Server.

Terminata l'installazione del Red Hat Linux Apache/SSL Server, è disponibile la documentazione del server Web Apache all'indirizzo http://your_domain/manual/ o al sito http://www.apache.org/docs/. La documentazione del server Web Apache presenta l'elenco e la descrizione di tutte le opzioni di configurazione.

Quando state modificando il file di configurazione del server Web, ricordatevi che la configurazione di default attiva un servizio Web "non sicuro" (sulla porta 80) ed uno "sicuro" con il supporto SSL (sulla porta 443). Il server Web sicuro è configurato come un virtual host nel file httpd.conf. Per maggiori informazioni sulla configurazione di un virtual host, fate riferimento alla la sezione Virtual Host.

NotaNota Bene
 

Non è inclusa l'estensione FrontPage, poichè la licenza Microsoft(TM) proibisce l'inserimento dell'estensione in prodotti di terze parti.

Direttive di configurazione nel file httpd.conf

Il file principale di configurazione del server Web Apache è /etc/httpd/conf/httpd.conf. È sufficientemente commentato e contiene vari esempi di configurazione. La configurazione di default del Red Hat Linux Apache/SSL Server è adatta alla maggior parte degli scopi, perciò è raro che vi capiti di modificarlo. Comunque è meglio che conosciate le opzioni di configurazione disponibili.

Nella directory /etc/httpd/conf sono presenti anche i file access.conf srm.conf (questo file è di grandezza nulla).

Se desiderate modificare la configurazione del Red Hat Linux Apache/SSL Server, modificate solamente il file httpd.conf, e riavviate il server Web. Per riavviare, terminare o avviare il server Web fate riferimento alla la sezione Avvio e Terminazione di Apache nel Capitolo 11.

Prima di modificare il file httpd.conf, è preferibile fare una copia del file originale chiamandolo ad esempio httpd.conf.orig.

Se avete inserito degli errori di configurazione ed il Red Hat Linux Apache/SSL Server non funziona correttamente, controllate le modifiche effettuate nel file httpd.conf. Inoltre è buona norma controllare il file di log /var/log/httpd/error_log. In questo file di log degli errori vengono registrati i messaggi degli errori generati dal server. Con un po' di esperienza sarete in grado di capire subito la causa del problema.

I prossimi paragrafi presentano una descrizione per ogni opzione che può essere inserita nel file httpd.conf. Queste descrizioni non trattano ogni particolarità di ogni opzione. Se avete necessità di un approfondimento fate riferimento alla documentazione di Apache in formato HTML disponibile all'indirizzo http://your_domain/manual/ o al sito Apache http://www.apache.org/docs/. Per maggiori informazioni sulle opzione di mod_ssl, fate riferimento alla documentazione inclusa in http://your_domain/manual/mod/mod_ssl/ in formtato HTML o al manuale utente mod_ssl al sito http://www.modssl.org/docs/2.6/.

ServerType

ServerType può essere impostato a inetd o standalone. L'impostazione di default di Red Hat Linux Apache/SSL Server è ServerType standalone

Con la direttiva ServerType standalone si attiva il server Web e gestisce tutte le connessioni. Con la direttiva ServerType inetd viene attivato un server per ogni richiesta di connessione HTTP. Ogni server gestisce un'unica connessione e termina appena viene chiusa. La configurazione basata su inetd è inefficiente poichè ad ogni richiesta di connessione è necessario creare una nuova istanza del processo server.

ServerRoot

ServerRoot è la directory top-level che contiene i file del server. Per entrambi i server (sicuro e non sicuro), ServerRoot è impostata a /etc/httpd.

LockFile

LockFile imposta il path per il lockfile utilizzato dal server Apache se è stato compilato con USE_FCNTL_SERIALIZED_ACCEPT o USE_FLOCK_SERIALIZED_ACCEPT. LockFile dovrebbe essere lasciato al suo valore di d default.

PidFile

PidFile è il file nel quale è memorizzato il pid (process ID) del server Web. È impostato a /var/run/httpd.pid.

ScoreBoardFile

ScoreBoardFile memorizza delle informazioni del processo server che sono usate per la comunicazione tra il processo padre ed i processi figli. ScoreBoardFile è impostato a /var/run/httpd.scoreboard.

ResourceConfig

La direttiva ResourceConfig avverte il server che deve leggere le istruzioni che seguono la direttiva ResourceConfig. La direttiva ResourceConfig è commentata perchè il vostro web server utilizza solo il file httpd.conf.

AccessConfig

La direttiva di configurazione AccessConfig indica al server di leggere il file specificato per caricare altre direttive, dopo che è stato letto il file indicato da ResourceConfig. La direttiva AccessConfig è commentata poichè la configurazione del Red Hat Linux Apache/SSL Server usa solamente il file httpd.conf.

Timeout

Timeout definisce il tempo espresso in secondi che il server aspetta per la ricezione e la trasmissione durante la comunicazione. Definisce quanto tempo il server aspetta per ricevere una richiesta GET, POST o PUT. Il Timeout è impostato a 300 secondi ed è il valore appropriato per la maggior parte delle situazioni.

KeepAlive

KeepAlive definisce se il server gestisce le connessioni persistenti (più di una richiesta per connessione). KeepAlive può essere usato per evitare che un client occupi troppe risorse del server. Per default KeepAlive è impostato a on in modo da accettare le connessioni persistenti. Per disabilitare le richieste persistenti impostatelo a off.

MaxKeepAliveRequests

Questa direttiva imposta il numero massimo di richieste accettate su una connessione persistente. Il team di sviluppo di Apache consiglia di impostarlo ad un valore alto per migliorare le prestazioni del server. Per default MaxKeepAliveRequests è impostato a 100.

KeepAliveTimeout

KeepAliveTimeout imposta il numero di secondi che il server attende per un'altra richiesta prima di chiudere la connessione.

MinSpareServers e MaxSpareServers

Il server Web Apache si adatta dinamicamente al carico di lavoro mantenendo un numero variabile di processi che gestiscono il carico di richieste. Il server principale controlla il numero di processi in esecuzione e li uccide se sono più del valore MaxSpareServers o li crea se sono inferiori al valore MinSpareServers.

Il valore di default di MinSpareServers è 5 mentre il valore di default di MaxSpareServers è 20. Non è consigliato aumentare il valore MinSpareServers per evitare di sovraccaricare il server.

StartServers

StartServers imposta quanti processi server devono essere creati all'avvio del servizio. Poichè il server Web uccide o crea dinamicamente i processi server in funzione del traffico, non è necessario alzare questo parametro. Il valore di defualt è otto.

MaxClients

MaxClients imposta un limite sul numero totale di processi server (e quindi anche di client connessi contemporaneamente) in esecuzione. Di solito questo valore viene impostato abbastanza alto (di default è 150). Non è possibile impostare un valore superiore a 256 senza ricompilare Apache. La ragione principale di limitare il numero di connessioni simultanee è di evitare di caricare troppo il calcolatore.

MaxRequestsPerChild

MaxRequestsPerChild imposta il numero massimo di richieste che può gestire ogni figlio prima che il processo sia ucciso. La ragione principale di MaxRequestsPerChild è di evitare che un processo rimanga in esecuzione molto tempo occupando troppa memoria. Il valore di default è 100.

Listen

Il comando Listen specifica su quale porta il Red Hat Linux Apache/SSL Server riceve le richieste. Per default il server Web attende le richieste sulla porta 80 per la comunicazione Web non sicura e sulla porta 443 per la comunicazione sicura.

Se impostate Apache ad ascoltare su una porta inferiore alla 1024, dove eseguire il processo httpd come root. Per le porte superiori alla 1024, potete eseguirlo come un qualsiasi utente.

Listen può essere usato per specificare un particolare indirizzo IP dal quale il server accetta le connessioni.

BindAddress

BindAddress è un modo per specificare da quale indirizzo IP il server deve rimanere in attesa. Dovreste usare la direttiva Listen se volete attivare questa funzionalità. BindAddress non viene usata nella configurazione di default.

LoadModule

LoadModule è utilizzato per caricare i moduli Dynamic Shared Object (DSO). Maggiori informazioni sono disponibili alla la sezione Aggiungere moduli al vostro server. Osservate che è importante l'ordine dei moduli e non deve essere cambiato.

IfDefine

I tag <IfDefine> e </IfDefine> non utilizzano la configurazione specificata al loro interno se è presente la definizione "test".

test è un nome del parametro nel <IfDefine> (come ad esempio HAVE_PERL). Se il parametro è definito (ad esempio viene fornito come argomento all'avvio del server Web), allora test è "true". In questo caso, quando il Red Hat Linux Apache/SSL Server viene attivato, i tag IfDefine che contengono test sono applicati.

Per default, i tag <IfDefine HAVE_SSL> contengono la configurazione virtual host per il server Web sicuro. I tag <IfDefine HAVE_SSL> contengono le direttive LoadModule e AddModule per il modulo ssl_module.

ClearModuleList

ClearModuleList si trova prima della sezione relativa alle direttive AddModule. La direttiva ClearModuleList inizializza la lista built-in di moduli attivi. Le direttive AddModule ricreano la lista dei moduli che devono essere caricati.

AddModule

AddModule è la direttiva usata per creare una lista dei moduli disponibili. Usate la direttiva AddModule se volete aggiungere altri moduli. Per maggiori informazioni sul caricamento dei moduli DSO, fate riferimento alla la sezione Aggiungere moduli al vostro server.

ExtendedStatus

La direttiva ExtendedStatus controlla se Apache genera le informazione base (off) o dettagliate (on), quando il gestore server-status viene chiamato. Server-status è chiamato usando il tag Location. Per maggiori informazioni fate riferimento alla la sezione Location.

Port

In generale, Port definisce la porta sulla quale il server rimane in ascolto. Red Hat Linux Apache/SSL Server ascolta su più di una porta, poichè viene usata anche la direttiva Listen. Per maggiori informazioni consultate la descrizione della direttiva Listen.

User

La direttiva User imposta lo userid utilizzato dal server per rispondere alle richieste. Lo User impostato determina gli accessi ai file ed i privilegi con i quali sono eseguiti i processi figli. Qualunque file non accessibile all'utente specificato non sarà distribuito via Web. L'utente di default è apache.

L'utente User dovrebbe avere i privilegi per accedere solamente ai file visibili via Web. I processi CGI vengono eseguiti con i diritti di User. All'utente User non dovrebbe essere permesso eseguire qualunque altro codice eseguibile in risposta alle richieste HTTP.

NotaNota Bene
 

Non impostate User a root. In questo modo rendete il vostro sistema Red Hat Linux Apache/SSL Server insicuro poichè il server Web viene eseguito con i diritti dell'utente root.

Il processo padre httpd viene eseguito con i diritti di root, ma tutti i processi che rispondono alle richieste HTTP sono eseguiti con i diritti dell'utente User. Il server principale deve essere eseguito con i diritti di root se volete utilizzare le porte inferiori alla 1024 (la comunicazione standard WWW è sulla porta 80 mentre la comunicazione standard WWW sicura è sulla porta 443). Le porte sotto la 1024 sono riservate per l'uso del sistema, perciò non sono accessibili a tutti gli utenti.

Group

La direttiva Group è analoga alla direttiva User. Group imposta il gruppo per l'esecuzione dei processi figli. Il gruppo di default è apache.

ServerAdmin

ServerAdmin è l'indirizzo di email dell'amministratore del server Web. Questo indirizzo di posta elettronica appare nei messaggi di errore generati via Web. Per default è impostato a root@localhost.

Normalmente alla direttiva ServerAdmin viene dato il valore webmaster@your_domain.com. Tramite il mail server si può girare automaticamente la posta ricevuta a questo indirizzo alla casella postale dell'amministratore del server Web (vedasi il file /etc/aliases ed il programma /usr/bin/newaliases).

ServerName

Potete usare la direttiva ServerName per impostare un hostname per il vostro server differente dal nome reale del calcolatore. Per esempio, potreste usare www.your_domain.com quando il nome del calcolatore è foo.your_domain.com. Osservate che ServerName deve essere un nome valido per il vostro DNS (Domain Name Service) affinché tutto funzioni correttamente.

Se specificate un ServerName, accertatevi che la corrispondeza nome simbolico ed indirizzo IP sia presente nel file /etc/hosts.

DocumentRoot

DocumentRoot è la directory che contiene i file HTML. La directory di default è /var/www/html. Per esempio il server Web può ricevere una richiesta per il seguente documento:

http://your_domain/foo.html

Il server cercerà il file nella nella directory di default:

/var/www/html/foo.html
	

Se volete cambiare la direttiva DocumentRoot in modo che non sia condivisa tra il server Web non sicuro ed il server Web sicuro fate riferimento al paragrafo la sezione Virtual Host.

Directory

<Directory /path/to/directory> e </Directory> sono usati per raggruppare un insieme di direttive da applicare ad una directory ed a tutte le sue sottodirectory.

Per default, i parametri più restrittivi più stringenti sono applicati alla directory root, tramite le direttive Options (vedasi il paragrafo la sezione Options) e AllowOverride (vedasi il paragrafo la sezione AllowOverride).

Usando il tag Location, la DocumentRoot (riferita come "/") è definita in modo che abbia meno parametri restrittivi.

La directory cgi-bin è impostata in modo da permette l'esecuzione dei programmi in essa contenuti, tramite l'opzione ExecCGI. Se avete bisogno di eseguire degli script CGI presenti in un'altra directory, dovete impostarle la direttiva ExecCGI. Per esempio, se la vostra directory cgi-bin è /var/www/cgi-bin, e volete eseguire anche i programmi presenti in /home/my_cgi_directory, modificate nel seguente modo il file httpd.conf:

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

Affinché sia possibile eseguire gli script CGI presenti in /home/my_cgi_directory, bisogna compiere ulteriori modifiche. Bisogna togliere il commento alla direttiva AddHandler per identificare i file con le estensioni .cgi come script CGI. Per maggiori informazioni fate riferimento al paragrafo la sezione AddHandler. I permessi per gli script CGI e per l'intero path deve essere 0755. Infine il propietario del file e della directory deve essere lo stesso.

Location

<Location> e </Location> permettono di controllare gli accessi in funzione dell'URL.

L'uso principale del tag Location è di configurare Options e di fornire altre configurazioni per la direttiva DocumentRoot. Queste direttive di configurazione presenti all'interno di <Location "/"> e di </Location> sono necessarie per definire l'accesso ai documenti presenti in DocumentRoot.

Location può essere presente anche all'interno dei tag IfModule mod_perl.c. Questa configurazione è attivata solamente se il modulo DSO mod_perl.so viene caricato. Per maggiori informazioni sul caricamento dei moduli di Apache, fate riferimento al paragrafo la sezione Aggiungere moduli al vostro server.

La tag Location assegna il nome alla directory /var/www/perl (un Alias /perl) che è la directory dalla quale gli script perl vengono eseguiti. Se viene richiesto un documento con un URL che nel path contiene /perl il vostro Web server controlla nella directory /var/www/perl/ per eseguire lo script corretto.

Altri esempi dell'opzione <Location> sono commentati nel file httpd.conf file. Se volete attivare queste opzioni dovete togliere il commento alla direttiva.

Immediatamente dopo la direttiva Perl discussa precedentemente, nel file httpd.conf è presente la direttiva per abilitare HTTP PUT. Se volete abilitare questa funzionalità togliete i commenti alla sezione

#LoadModule put_module          modules/mod_put.so
#AddModule mod_put.c
#
#Alias /upload /tmp
#<Location /upload>
#    EnablePut On
#    AuthType Basic
#    AuthName Temporary
#    AuthUserFile /etc/httpd/conf/passwd
#    EnableDelete Off
#    umask 007
#    <Limit PUT>
#       require valid-user
#    </Limit>
#</Location>

Se volete accedere via Web al report sullo stato del server Web, togliete il commento alla sezione

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

Dovete sostituire .your_domain.com con il vostro dominio.

Se volete fornire diverse configurazioni di report dovete togliere il commento alle seguenti righe:

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

Anche in questa sezione inserite il vostro dominio.

La prossima sezione utilizza i tag Location per permette l'accesso alla documentazione presente nella directory /usr/share/doc selezionando l'indirizzo URL http://your_domain/doc/whatever.html. La direttiva permette l'accesso dalle richieste provenienti da localhost (in locale).

Un altro uso dei tag Location è di attivare una sezione che controlla gli attacchi al sito Web per un exploit di una vecchia versione di Apache. Se volete registrare questi attacchi, togliete il commento alle seguenti righe:

#<Location /cgi-bin/phf*>
#    Deny from all
#    ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
#</Location>

Se queste linee non sono commentate, il vostro server Web ridireziona le richieste che terminano in /cgi-bin/phf* allo script CGI di log.

Options

La direttiva Options controlla che le caratteristiche del server siano disponibili in una particolare directory. Per esempio, per la directory root è specificato Options FollowSymLinks. Perciò il server Web segue i link simbolici presenti nell'albero delle directory root.

Nella configurazione di default, per la directory DocumentRoot sono impostate le seguenti opzioni: Indexes, Includes e FollowSymLinks. Indexes permette al server di generare una directory listing. Includes significa gli include sono permessi lato server. FollowSymLinks permette al server di seguire i link simbolici presenti nelle directory.

È necessario inserire la direttiva Options per le directory dei virtual host, se desiderate che il virtual host riconosca particolari opzioni.

Per esempio, i server side include sono già abilitati all'interno della directory /var/www/html tramite l'opzione Options Includes all'interno della sezione Location "/". Comunque se volete che il virtual host riconosca che i server side include siano abilitati all'interno della directory /var/www/html, dovete includere la sezione seguente tra i tag del virtual host:

<Directory /var/www/html>
Options Includes
</Directory>

AllowOverride

La direttiva AllowOverride serve per definire se le Options possono essere ridefinite dalle dichiarazioni presenti nel file .htaccess. Per default, sia nella directory root che nella directory DocumentRoot non è permesso sovrascrivere il file .htaccess.

Order

La direttiva Order controlla l'ordine di valutazione delle direttive allow e deny. Il server è configurato per valutare prima la direttiva deny per la directory DocumentRoot.

Allow

Allow specifica quali richieste possono accedere ad una directory. Il campo richiedente può essere all, un dominio, un indirizzo IP, una parte dell'indirizzo IP, la coppia rete/netmask, ecc. La directory DocumentRoot è configurata per permettere l'accesso da all (da qualunque client).

Deny

Deny funziona in modo simile ad allow, ma specifica quali accessi negare. Per la DocumentRoot non è stata specificata nessuna richiesta negata.

UserDir

UserDir è il nome della sottodirectory contenente i file HTML personali dell'utente. Per default la sottodirectory ha il nome public_html e deve essere presente nella home directory dell'utente. Per esempio il server può riceve la seguente richiesta HTTP:

http://your_domain/~username/foo.html
	

Così il server cerca il file:

/home/username/public_html/foo.html
	

Nell'esempio precedente, /home/username è la home directory dell'utente (si osservi che il path di default della home directory può essere differente sul vostro sistema).

Assicuratevi che i permessi della home directory dell'utente siano corretti. I permessi della home directory dell'utente devono essere 0755. La lettura (r) e l'accesso (x) deve essere attivato sulla directory public_html (0755 funziona correttamente). I file presenti nella directory public_html devono essere almeno 0644.

DirectoryIndex

La direttiva DirectoryIndex indica il nome della pagina di default che viene restituita al client se l'indirizzo URL termina con (/).

Per esempio, quando una richiesta è del tipo http://your_domain/this_directory/, la configurazione di default cerca se è presente nell'ordine uno dei seguenti file: index.html, index.htm index.shtml o index.cgi. Nel caso non venisse trovato nessuno di questi file, genera l'elenco dei file e delle directory presenti in formato HTML e lo restituisce al client.

AccessFileName

AccessFileName specifica il nome del file che il server Web usa per il controllo di accesso alla directory. Per default, il nome è .htaccess.

Immediatamente dopo la direttiva AccessFileName, un tag Files controlla l'accesso ai file che iniziano con .ht. Per ragioni di sicurezza questa direttiva nega l'accesso via Web a qualunque file .htaccess.

CacheNegotiatedDocs

Per default, il Red Hat Linux Apache/SSL Server non si comporta da proxy server. Togliendo il commento alla direttiva CacheNegotiatedDocs, al proxy server sarà permesso fare la cache dei documenti.

UseCanonicalName

Per default UseCanonicalName è impostato a on. UseCanonicalName permette ad un server di costruire un URL che si riferisce a se stesso utilizzando ServerName e Port. Quando il server si riferisce a se stesso per rispondere ad un richiesta, utilizza questo URL. Se invece impostate UseCanonicalName a off, il server userà il nome inviato dal client.

TypesConfig

TypesConfig definisce il nome del file che contiene i tipi MIME di default. TypesConfig fa riferimento al file /etc/mime.types. Invece di modificare il file /etc/mime.types, si consiglia di aggiungere i tipi MIME tramite la direttiva AddType.

DefaultType

DefaultType definisce il tipo MIME di default per quei documenti che non sono riconosciuti. Secondo la configurazione di default, se il server Web non riconosce un tipo di file assume che sia in formato testo.

IfModule

I tag <IfModule> e </IfModule> raggruppano le direttive che sono condizionali. Le direttive presenti all'interno di IfModule sono elaborate solo se la condizione specificata è vera. Le direttive sono elaborate se il modulo specificato all'interno del tag <IfModule> è compilato nel server Apache. Se il "!" (punto esclamativo) è inserito prima del nome del modulo, le direttive sono elaborate solo se il modulo non è compilato all'interno di Apache.

Il file mod_mime_magic.c è incluso nei tag IfModule. Il modulo mod_mime_magic è simile al comando file di UNIX che legge i primi byte del file per verificare il tipo di file, e suggerisce il tipo MIME di ogni file.

Se il modulo mod_mime_magic è incluso in Apache, i tag IfModule indicano al modulo mod_mime_magic dove il si trova il file dei suggerimenti share/magic.

Il modulo mod_mime_magic non è incluso per default. Se volete aggiungerlo, fate riferimento al paragrafo la sezione Aggiungere moduli al vostro server.

HostnameLookups

HostnameLookups può essere impostato a on o a off. Se impostate HostnameLookups a on, il server automaticamente risolve, se possibile, l'indirizzo IP in indirizzo simbolico di ogni client che compie una richiesta HTTP. Per la risoluzione dell'indirizzo IP, il server Web deve compiere varie connessioni al DNS per trovare il nome simbolico che corrisponde all'indirizzo IP.

Normalmente dovreste lasciare HostnameLookups a off per evitare di sovraccaricare il server.

ErrorLog

ErrorLog specifica il nome del file dove il server registra tutti gli errori che sono generati. Per default il file di log degli errori del server Web è il seguente: /var/log/httpd/error_log.

Il file di log degli errori è il miglior posto per cercare se il server Web genera degli errori o per capire la causa dei malfunzionamenti.

LogLevel

LogLevel definisce il livello "verbose" dei messaggi d'errore registrati nel file di log. LogLevel può essere impostato a emerg, alert, crit, error, warn, notice, info o debug. Per default è impostato a warn (valore medio).

LogFormat

La direttiva LogFormat definisce il formato dei messaggi di accesso registrati nel file di log; questo formato rende facilmente leggibile il file di log degli accessi.

CustomLog

CustomLog identifica il file di log ed il formato del file. La configurazione di default, il file di log è /var/log/httpd/access_log. Se volete generare delle statistiche di accesso al sito Web dovete conoscere dove è memorizzato questo file.

CustomLog definisce il formato dei file di log. Il formato standard è

remotehost rfc931 authuser [date] "request" status bytes

remotehost

Hostname remoto. Se il nome dell'host non è risolto dal DNS oppure se HostnameLookups è impostatto a Off, allora il campo remotehost contiene l'indirizzo IP.

rfc931

Non usato. Viene inserito il carattere -.

authuser

Se viene richiesta l'autenticazione, allora contiene lo username che identifica l'utente. Di solito non viene usato ed è riempito con il carattere -.

[date]

Data e orario della richiesta.

"request"

La stringa contenente la richiesta esattamente come è stata inviata dal client.

status

Codice dello stato HTTP restituito al client.

byte

Dimensione del documento.

Il comando CustomLog può essere usato per specificare i campi dei file di log. Nel file di configurazione sono presenti due esempi di file di log, uno rigurdante i riferimenti tra le pagine Web, l'altro per la raccolta delle informazioni sul browser usato.

#CustomLog /var/log/httpd/referer_log referer 
#CustomLog /var/log/httpd/agent_log agent

Potete anche utilizzare la direttiva CommonLog per creare un file di log combined.

#CustomLog /var/log/httpd/access_log combined

Un file di log combined aggiunge i campi referer ed agent al termine di ogni riga. Se desiderate utilizzare un file di log combined, togliete il commento alla direttiva CustomLog.

ServerSignature

La direttiva ServerSignature aggiunge una linea contenente la versione del server Apache ed il nome ServerName alle pagine Web generate dal server (ad esempio nelle pagine contenenti i messaggi d'errore). Per default ServerSignature è impostato a on. Se non volete aggiungere queste informazioni impostatelo a off. Potete anche inserire il tag EMail. In tal caso nelle pagine Web generate dal Server viene aggiunta la stringa mailto:ServerAdmin.

Alias

La direttiva Alias permette l'accesso alle directory che sono al di fuori di DocumentRoot. Qualunque URL che termina con l'alias, automaticamente viene risolto nel path alias. Nella configurazione di default è già presente un alias. La directory icons è accessibile anche se si trova fuori della directory DocumentRoot. La directory icons è un alias a /var/www/icons/.

ScriptAlias

La direttiva ScriptAlias definisce dove sono localizzati gli script CGI (o gli altri tipi di script). Normalmente non dovete lasciare gli script CGI all'interno di DocumentRoot. Se gli script CGI sono in DocumentRoot, potrebbero essere visualizzati come dei documenti di testo. Una configurazione di questo tipo potrebbe rendere poco sicuro il vostro sistema. Per default la directory cgi-bin è uno ScriptAlias della directory /var/www/cgi-bin/.

Per la directory /var/www/cgi-bin è stata impostata l'opzione Options ExecCGI, che abilita l'esecuzione degli script presenti in essa.

Per maggiori informazioni sull'esecuzione di script CGI fate riferimento ai paragrafi la sezione AddHandler e la sezione Directory.

Redirect

Quando una pagina Web è stata rimossa, la direttiva Redirect può essere utilizzata per rimappare il vecchio URL con quello nuovo. Il formato è il seguente:

Redirect /path/foo.html http://new_domain/path/foo.html

Se si riceve una richiesta HTTP per la pagina http://your_domain/path/foo.html, il server restituisce la pagina http://new_domain/path/foo.html.

IndexOptions

IndexOptions controlla l'apparenza degli elenchi delle directory generate del server. Se la direttiva Options Indexes è impostata (vedasi la sezione Options), il server Web genera l'elenco delle directory quando riceve una richiesta HTTP:

http://your_domain/this_directory/

Innanzitutto, il server Web cerca nella directory uno dei file specificati con la direttiva DirectoryIndex (ad esempio index.html). Se i file non sono presenti, crea un file HTML contenente l'elenco dei file e delle directory. Potete modificare l'apparenza di queste pagine tramite la direttiva IndexOptions.

La configurazione di default imposta FancyIndexing a on. Se FancyIndexing è attivato, cliccando sull'intestazione della colonna, cambia l'ordinamento dei file e delle directory. Con un altro clic sulla stessa intestazione, si cambia tra ordinamento ascendente o discendente. FancyIndexing visualizza un'icona per ogni tipo di file, in funzione dell'estensione.

IndexOptions ha vari parametri per selezionare l'apparenza degli elenchi delle directory. I parametri possibili sono IconHeight e IconWidth, per generare le pagine Web con le icone di dimensioni maggiori; IconsAreLinks fa in modo che le icone siano dei link.

AddIconByEncoding

Questa direttiva associa un'icona ad un particolare tipo di file secondo la codifica MIME. Per esempio il server Web visualizza l'icona compressed.gif per i file di tipo x-compress e x-gzip.

AddIconByType

Questa direttiva specifica il nome dell'icona che deve essere visualizzata in funzione del tipo MIME del file. Per esempio, il server Web è impostato per visualizzare l'icona text.gif per i file con il tipo MIME "text".

AddIcon

AddIcon indica al server una particolare icona in funzione dell'estensione del file. Ad esempio il server Web visualizza l'icona binary.gif per i file che hanno l'estensione .bin o .exe.

DefaultIcon

DefaultIcon specifica l'icona di default da visualizzare nel caso non sia presente una associazione. Il nome dell'icona di default è unknown.gif.

AddDescription

Potete utilizzare la direttiva AddDescription per visualizzare il testo che specifica certi file. Per esempio, potete utilizzare la seguente configurazione:

AddDescription "A file that ends in .ni" .ni
	

In ogni elenco generato dal server Web, tutti i file con l'estensione .ni hanno la descrizione che è stata specificata. Osservate che è necessario attivare la direttiva FancyIndexing turned on.

ReadmeName

ReadmeName definisce il nome del file (se esiste nella directory) che viene aggiunto alla fine dell'elenco. Nella configurazione di default, ReadmeName è impostato al valore README.

HeaderName

HeaderName specifica il nome del file che viene inserito prima dell'elenco della directory. Per default, il server Web cerca il file ReadmeName.

IndexIgnore

Il server Web non visualizza i file che soddisfano una qualunque regola definita con questa direttiva.

AddEncoding

AddEncoding definisce le estensioni dei file che hanno una particolare codifica. AddEncoding può essere utilizzato per istruire il browser di decomprimere certi file che vengono scaricati.

AddLanguage

AddLanguage associa l'estensione di un file ad una particolare lingua. Questa direttiva è utile se il server deve restituire i documenti HTML in funzione della lingua preferita specificata nel browser.

LanguagePriority

LanguagePriority vi permette di definire quali file vengono restituiti se nel browser non è stata specificata la lingua preferita.

AddType

Usate la direttiva AddType per associare un tipo MIME ad una estensione dei file. Per esempio, se state utilizzando il linguaggio PHP4, dovete aggiungere la direttiva AddType affinché il server Web riconosca i file PHP come tipo MIME (di solito hanno l'estensione .php4, .php3, .phtml o .php).

La seguente linea riconosce l'estensione .shtml:

AddType text/html .shtml

Se avete attivato un virtual host, dovete inserire la definizione precedente anche nella configurazione del virtual host.

AddHandler

AddHandler mappa l'estensione di un file ad uno specifico gestore. Per esempio, il gestore cgi-script può essere utilizzato per associare l'estensione .cgi ad un file script CGI. Questo metodo funziona anche al di fuori della directory ScriptAlias.

Con la linea nel file httpd.conf

AddHandler cgi-script .cgi

Apache eseguirà gli script CGI per i file che terminano in .cgi, anche se sono al di fuori di ScriptAlias, che viene configurato per default per localizzare la vostra directory /cgi-bin/ in /var/www/cgi-bin/.

Dovete anche configurare ExecCGI come opzione per ogni directory che contiene uno script CGI. Si veda la la sezione Directory per maggiori informazioni sulla configurazione della directory ExecCGI. Accertatevi che i permessi siano configurati correttamente per gli script CGI e per le directory che li contengono. Sia gli script che le directory che li contengono devono avere i permessi impostati a 0755. Infine anche il proprietario della directory ed il proprietario dei file devono essere la stessa persona.

Avrete bisogno di aggiungere la stessa entry AddHandler nel setup del vostro VirtualHost, anche se gli script CGI sono al di fuori di ScriptAlias.

In aggiunta agli script CGI, il vostro server Web utilizza anche AddHandler per processare gli HTML e i file imagemap.

Action

Action vi permette di specificare un contenuto MIME e uno script CGI, quindi quando viene richiesto un file di un determinato tipo viene eseguito uno script CGI.

MetaDir

La MetaDir specifica il nome della directory in cui il vostro server Web deve cercare i file che contengono meta informazioni (extra HTTP) per includerle, qundo servono, nei documenti.

MetaSuffix

Il MetaSuffix specifica il suffisso del file che contiene meta informazioni (extra HTTP ), che si deve trovare nella directory MetaDir.

ErrorDocument

Per default, nel caso di un problema o di un errore, il vostro server Web mostra un semplice (e di solito critico) messaggio di errore. Invece di usare l'impostazione di default, potete utilizzare la direttiva ErrorDocument per personalizzare il messaggio da visualizzare in caso di errore. ErrorDocument associa il codice HTTP ad un messaggio o ad un URL che verrà restituito al browser.

BrowserMatch

La direttiva BrowserMatch definisce le variabili d'ambiente e/o azioni basate sul campo header User-Agent HTTP, che identifica il browser del client. Per default il vostro server Web utilizza BrowserMatch per negare le connessioni ad un determinato browser.

Richieste Proxy

Se togliete il commento alla entry IfModule inserendo invece la ProxyRequests, il vostro server Apache si comporterà anche da proxy server. Avrete anche bisogno di caricare il modulo mod_proxy. Per informazioni su come caricare i moduli si veda la la sezione Aggiungere moduli al vostro server.

ProxyVia

Il comando ProxyVia controlla o meno l'HTTP Via: la linea relativa all'header viene spedita insieme con la richiesta o la risposta di cosa attraversa il server proxy Apache. L'header Via: mostra l'hostname se ProxyVia viene impostato a On.

Direttive della Cache

Una serie di direttive relative alla cache sono commentate nel proxy IfModule menzionato sopra. Se state utilizzando la funzionalità proxy server e volete anche abilitare la proxy cache, dovete togliere il commento alla direttiva cache come descritto. La configurazione di default per la vostra direttiva cache dovrebbe essere corretta per molte configurazioni.

La CacheRoot configura il nome della directory che contiene i file cachati. La CacheRoot di default è /var/cache/httpd.

La direttiva CacheSize specifica quanto spazio potete usare in KB. La CacheSize di default è 5KB.

La CacheGcInterval specifica un tempo in ore. Dopo questo numero di ore, i file nella cache vengono cancellati se utilizza più spazio di quanto configurato in CacheSize. Il valore di default è quattro ore.

I documenti in HTML rimangono in cache (senza che venga effettuata una nuova richiesta) per un numero massimo di ore configurato in CacheMaxExpire. Il valore di default è 24 ore.

La entry CacheLastModifiedFactor permette di evitare che venga creata una expiration date per un documento arrivato con una sua propria expiration date. Il valore di default per CacheLastModifiedFactor è configurato in 0.1.

La entry CacheDefaultExpire specifica l'expiry time in ore per un documento ricevuto che utilizza un protocollo che non supporta l'expiry time. La configurazione di default è un'ora.

Ogni documento ricevuto da un host e/o un dominio che è conforme alla configurazione in NoCache non verrà memorizzato nella cache.

NameVirtualHost

Avrete bisogno di utilizzare la direttiva NameVirtualHost per un indirizzo IP (ed un numero di prota se necessario) di ogni virtual host name-based che state configurando. La configurazione dei virtual host name-based viene utilizzata quando dovete configurare diversi virtual host per altrettanti domini, ma non dovete (o non volete usare) indirizzi IP diversi per ogni host.

NotaNota Bene
 

Non potete usare un virtual host name-based con il vostro secure server. Ogni virtual host name-based che configurate avrà solo connessioni HTTP "non sicure".

Non potete usare virtual host name-based con il vostro secure server perchè ls SSL handshake (il momento in cui il browser accetta il certificato di autenticazione del Web server) si attiva prima della richiesta HTTP che identifica il virtual host name-based corretto. In altre parole l'autenticazione viene effettuata prima che ci sia qualunque identificazione di virtual host name-based. Se volete usare il virtual host in abbinamento con il secure server, dovrete usare virtual host IP address-based.

Se usate un virtual host name-based togliete il commento alla direttiva NameVirtualHost ed aggiungete l'indirizzo IP corretto. Poi aggiungete le informazioni relative ai differenti domini utilizzando il tag Virtual Host.

VirtualHost

I tag <VirtualHost> e </VirtualHost> controllano le direttive di configurazione che deve essere applicata ad un virtual host. La maggior parte delle direttive di configurazione possono essere usate nei tag virtual host, e verranno applicate all'host a cui si riferiscono.

Una serie di tag VirtualHost commentati sono presenti in alcune direttive di configurazione. Si veda la la sezione Virtual Host, per maggiori informazioni sui virtual host.

SetEnvIf

La direttiva di configurazione di Apache SetEnvIf viene utilizzata per disabilitare l'HTTP keepalive e per permettere al protocollo SSL di chiudere la connessione. La configurazione è necessaria per alcuni browser che non sono in grado di chiudere la connessione SSL.

Le direttive di configurazione per l'SSL

La direttiva SSL viene inclusa nel file httpd.conf del server per abilitare le comunicazioni Web secure utilizzando SSL e TLS.

Per maggiori informazioni sulle direttive relative al protocollo SSL visitate il sito http://your_domain/manual/mod/mod_ssl/. Alcune informazioni aggiuntive sulle direttive SSL sono disponibili al sito http://www.modssl.org/docs/2.6/ssl_reference.html/, che è un capitolo incluso nel documento Web sul modulo mod_ssl scritto da Ralf Engelschall. Lo stesso documento il mod_ssl User Manual, è disponibile all'indirizzo Web : http://www.modssl.org/docs/2.6/ ed è un'ottima referenza per mod_ssl e per la cifratura in generale. Questo manuale fornisce informazioni generali sulla sicurezza del server Web al Capitolo 11.

NotaNota Bene
 

Non modificate le vostre direttive SSL se non siete certi di quello che state facendo. Per la maggior parte dei casi è sufficiente utilizzare la configurazione di default.