Red Hat Linux 7.1: Official Red Hat Linux Reference Guide | ||
---|---|---|
Indietro | Capitolo 14. Direttive e moduli Apache | Avanti |
Il file di configurazione del server Web Apache si chiama /etc/httpd/conf/httpd.conf. Si tratta di un file abbastanza comune e la sua configurazione di default si adatta a molti, dunque probabilmente non ci sarà bisogno di modificare le direttive in httpd.conf. Forse, però, desiderate approfondire le opzioni di configurazione più importanti.
Anche i file vuoti srm.conf e access.conf sono contenuti nella directory /etc/httpd/conf. Questi file erano utilizzati insieme a httpd.conf come file di configurazione per Apache.
Se vi occorre configurare Apache, modificate httpd.conf e ricaricate o spegnete e riavviate il processo httpd. Per saperne di più su come ricaricare, chiudere e avviare Apache, consultate la la sezione Avvio e chiusura di httpd.
Prima di modificare httpd.conf, si consiglia di copiare il file originale, chiamandolo, per esempio, httpd.confold. In questo modo, se doveste commettere un errore durante la modifica del file, avrete comunque una copia di backup.
Se il vostro server Web non funziona in modo corretto, la prima cosa da fare è verificare le modifiche appena effettuate nel file httpd.conf. Assicuratevi che non vi siano errori di battitura. Dopodiche´ controllate il file di log del vostro server Web (/var/log/httpd/error_log). Il file di log degli errori non è facile da interpretare, in genere però gli ultimi inserimenti nel log degli errori dovrebbero aiutarvi a individuare la causa del problema.
I prossimi paragrafi presentano una descrizione delle direttive contenute nel file httpd.conf, nella sequenza in cui le trovate nel file. Queste descrizioni sono abbastanza succinte, quindi se vi occorre un approfondimento, consultate la documentazione di Apache in formato HTML disponibile all'indirizzo http://vostro_dominio/manual/ o nel sito Apache all'indirizzo http://www.apache.org/docs/. Per maggiori informazioni sulle direttive di mod_ssl, consultate la documentazione disponibile all'indirizzo http://vostro_dominio/manual/mod/mod_ssl/ in formato HTML o lo User's Manual di mod-ssl all'indirizzo http://www.modssl.org/docs/2.7/.
ServerType può essere impostato come inetd o standalone. L'impostazione di default del vostro server Web è ServerType standalone.
La direttiva ServerType standalone attiva il server Web una volta sola, il quale gestisce tutte le connessioni. Invece, la direttiva ServerType inetd indica che per ogni connessione HTTP viene avviata una nuova istanza del server. Ogni istanza gestisce un'unica connessione e termina appena viene chiusa. Come probabilmente avrete capito, l'uso di inetd non è molto efficace. Inoltre capita che inetd non funzioni in modo corretto, a seconda del gruppo di Apache. Infine, considerato che Red Hat Linux 7.1 usa xinetd, è necessaria una configurazione aggiuntiva affinché xinetd attivi il server. Per queste ragioni, è consigliabile lasciare il ServerType del server Web impostato come standalone.
ServerRoot è la directory di livello superiore che contiene i file del server. Entrambi i server (sicuro e non sicuro) sono impostati per utilizzare una ServerRoot di /etc/httpd.
LockFile imposta il percorso per il file di blocco utilizzato dal server Apache se è stato compilato con USE_FCNTL_SERIALIZED_ACCEPT o USE_FLOCK_SERIALIZED_ACCEPT. È consigliabile lasciare LockFile al suo valore di default.
PidFile è il file nel quale è memorizzato il pid (ID del processo) del server Web. Di solito è contenuto nella directory /var/run/httpd.pid.
ScoreBoardFile immagazzina le informazioni del processo server che sono usate per la comunicazione tra il processo padre e i processi figli. ScoreBoardFile è contenuto in /var/run/httpd.scoreboard.
La direttiva ResourceConfig comanda al server di leggere il file specificato. La direttiva ResourceConfig è commentata perché il vostro server Web utilizza solo il file httpd.conf per le direttive di configurazione.
La direttiva di configurazione AccessConfig indica al server di leggere il file specificato per caricare altre direttive, dopo aver letto il file indicato da ResourceConfig. La direttiva AccessConfig è commentata poiché la configurazione del server Web usa solamente il file httpd.conf per le direttive di configurazione.
Timeout definisce il tempo espresso in secondi che il server aspetta per la ricezione e la trasmissione durante la comunicazione. In particolare, definisce quanto tempo il server aspetta per ricevere una richiesta GET, per ricevere pacchetti TCP su richiesta POST o PUT e che aspetta la risposta degli ACK ai pacchetti TCP. Il Timeout è impostato per attendere 300 secondi, ossia il tempo adeguato per la maggior parte delle situazioni.
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 su on in modo da autorizzare le connessioni persistenti. Per disabilitare tali connessioni, impostatelo su off. Se volete saperne di più su come limitare le richieste per ogni connessione, consultate la la sezione MaxKeepAliveRequests.
Questa direttiva imposta il numero massimo di richieste accettate su ogni connessione persistente. Il team di sviluppo di Apache consiglia di impostarlo su un valore alto per migliorare le prestazioni del server. MaxKeepAliveRequests è impostato per default su 100.
KeepAliveTimeout imposta il tempo (in secondi) durante il quale il server attende un'altra richiesta prima di chiudere la connessione. Una volta ricevuta la richiesta, si applica invece la direttiva Timeout.
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 server in attesa di richiesta e li elimina se superano il valore di MaxSpareServers o li avvia se sono inferiori al valore di MinSpareServers.
Il valore di default di MinSpareServers è 5, mentre il valore di default di MaxSpareServers è 20. Si consiglia di non aumentare troppo il valore di MinSpareServers per evitare di sovraccaricare il server.
StartServers imposta il numero di processi server che devono essere creati all'avvio del servizio. Poiché il server Web elimina o crea dinamicamente i processi server in funzione del traffico, non è necessario aumentare questo parametro. Il valore di default è otto.
MaxClients imposta un limite per il numero totale di processi server (e quindi anche di client connessi contemporaneamente) in esecuzione. Di solito il valore impostato è abbastanza alto (di default 150). Non è possibile impostare un valore superiore a 256 senza ricompilare Apache. La ragione principale per cui conviene limitare il numero di connessioni simultanee è di evitare di provocare un crash del sistema operativo.
MaxRequestsPerChild imposta il numero massimo di richieste che ogni figlio può gestire prima che il processo sia eliminato. Lo scopo principale di MaxRequestsPerChild è di evitare che un processo rimanga in esecuzione per molto tempo, occupando così troppa memoria. Il valore di default è 100.
Il comando Listen specifica su quale porta il server Web 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 perché attenda su una porta inferiore alla 1024, dovete eseguire il processo httpd come root. Per le porte superiori alla 1024, potete eseguirlo come un qualsiasi utente.
Listen può inoltre essere usato per specificare particolari indirizzi IP dai quali il server accetta le connessioni.
BindAddress è un modo per specificare su quale indirizzo IP il server deve rimanere in attesa. Per attivare questa funzionalità usate la direttiva Listen. BindAddress non viene usata dal server Web, è infatti commentata per default in httpd.conf.
LoadModule è utilizzato per caricare i moduli Dynamic Shared Object (DSO, oggetti condivisi dinamicamente). Maggiori informazioni sono disponibili nella la sezione Aggiungere moduli al server. L'ordine dei moduli è estremamente importante e non deve essere cambiato.
I tag <IfDefine> e </IfDefine> non utilizzano la configurazione specificata al loro interno se nel primo tag la definizione "test" 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 dell'avvio del server Web), allora il test è "vero". In questo caso il server Web viene attivato e le direttive contenute nei tag IfDefine vengono applicate.
I tag <IfDefine HAVE_SSL> contengono per default la configurazione dell'host virtuale per il server Web sicuro. I tag <IfDefine HAVE_SSL> contengono le direttive LoadModule e AddModule per il modulo ssl_module.
ClearModuleList si trova prima della sezione relativa alle direttive AddModule. La direttiva ClearModuleList inizializza la lista integrata dei moduli attivi. Le direttive AddModule ricreano la lista dei moduli che devono essere caricati subito dopo ClearModuleList.
AddModule è la direttiva usata per creare una lista dei moduli disponibili. Usate questa direttiva, se volete aggiungere altri moduli. Per maggiori informazioni sul caricamento dei moduli DSO, consultate la la sezione Aggiungere moduli al server.
La direttiva ExtendedStatus controlla se Apache genera le informazioni base (off) o dettagliate (on), quando viene chiamato il gestore server-status mediante il tag Location. Per maggiori informazioni consultate la la sezione Location.
In generale, Port definisce la porta sulla quale il server attende. Si tratta normalmente di diverse porte poiché viene usata anche la direttiva Listen (e quindi il server attende su tutte le porte). Per maggiori informazioni consultate la descrizione della direttiva Listen.
Il comando Port specifica inoltre il numero della porta per attribuire un nome canonico al server. Per maggiori informazioni, consultate la la sezione UseCanonicalName.
La direttiva User imposta lo userid utilizzato dal server per rispondere alle richieste. Lo User impostato determina gli accessi ai file e 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. L'utente User non dovrebbe essere autorizzato a eseguire qualunque altro codice che non sia in risposta alle richieste HTTP.
Nota Bene | |
---|---|
Non impostate User come root. Se lo fate, potreste rendere il vostro server Web poco sicuro. |
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 all'uso del sistema, perciò sono accessibili solo dall'utente root. Quando il server si è collegato alla propria porta, comunque, rinvia il processo a User prima di accettare qualsiasi richiesta di connessione.
La direttiva Group è analoga alla direttiva User. Group imposta il gruppo per l'esecuzione dei processi figli. Il gruppo di default è apache.
ServerAdmin è l'indirizzo di posta elettronica dell'amministratore del server Web. Questo indirizzo di posta elettronica appare nei messaggi di errore nelle pagine Web generate dal server, in questo modo gli utenti possono riferire eventuali problemi inviando un'e-mail all'amministratore del server. ServerAdmin è impostato per default su root@localhost.
Normalmente alla direttiva ServerAdmin viene attribuito il valore webmaster@your_domain.com. Assegnate dunque un alias a webmaster per la persona responsabile del server Web nel file /etc/aliases. Infine eseguite /usr/bin/newaliases per aggiungere il nuovo alias.
Potete usare la direttiva ServerName per impostare un hostname per il vostro server differente dal nome reale del calcolatore. Per esempio, potete usare www.your_domain.com se il nome del calcolatore è foo.your_domain.com. ServerName deve essere un nome valido per il vostro DNS (Domain Name Service) affinché tutto funzioni correttamente.
Se specificate un ServerName, accertatevi che nel file /etc/hosts esista la corrispondenza tra nome simbolico e indirizzo IP.
DocumentRoot è la directory che contiene i file HTML in risposta alle richieste. La directory di default per entrambi i server Web sicuro e non sicuro è /var/www/html. Per esempio, il server Web può ricevere una richiesta per il seguente documento:
http://vostro_dominio/foo.html |
Il server cercherà il file nella directory di default:
/var/www/html/foo.html |
Se desiderate modificare la direttiva DocumentRoot in modo che non sia condivisa dal server Web non sicuro e quello sicuro, consultate la la sezione L'uso degli host virtuali.
I tag <Directory /path/to/directory> e </Directory> sono usati per raggruppare un insieme di direttive di configurazione da applicare solo a una directory e a tutte le sue sottodirectory. Tutte le direttive applicabili a una directory possono essere usate all'interno dei tag <Directory>. I tag <File> invece possono essere usati allo stesso modo dei file.
Per default, i parametri più restrittivi sono applicati alla directory root, tramite le direttive Options (vedere la la sezione Options) e AllowOverride (vedere la la sezione AllowOverride). Con questa configurazione, alle directory sul sistema che necessitano di impostazioni meno restrittive devono essere assegnate in modo esplicito tutte queste impostazioni.
Usando i tag Directory, la DocumentRoot avrà parametri meno restrittivi, in modo tale da poter effettuare le richieste HTTP.
La directory cgi-bin è impostata in modo da permette l'esecuzione dei programmi in essa contenuti, tramite l'opzione ExecCGI. Se dovete eseguire degli script CGI presenti in un'altra directory, impostate la direttiva ExecCGI. Per esempio, se la vostra directory cgi-bin è /var/www/cgi-bin, ma volete eseguire anche gli script CGI presenti in /home/my_cgi_directory, aggiungete una direttiva ExecCGI al file httpd.conf come avviene nell'esempio seguente:
<Directory /home/my_cgi_directory> Options +ExecCGI </Directory> |
Per poter eseguire gli script CGI presenti in /home/my_cgi_directory, sono necessarie ulteriori modifiche. Innanzitutto eliminate il commento dalla direttiva AddHandler per identificare i file con le estensioni .cgi come script CGI. Per maggiori informazioni, consultate la la sezione AddHandler. I permessi per gli script CGI e l'intero percorso vanno impostati su 0755. Infine il proprietario del file deve essere lo stesso della directory.
La direttiva Options controlla le caratteristiche del server disponibili in una particolare directory. Per esempio, con i parametri restrittivi specificati per la directory root, la direttiva Options è impostata solo per FollowSymLinks: quindi non sono autorizzate altre caratteristiche tranne quella che consente al server di seguire i link simbolici nella directory root.
Di default, nella directory DocumentRoot, Options è configurato per contenere Indexes, Includes e FollowSymLinks. Indexes permette al server di generare una lista di directory per una directory, se non è specificata alcuna DirectoryIndex (per esempio: index.html). Includes indica che sono autorizzati gli include del server. FollowSymLinks consente al server di seguire i link simbolici in questa directory.
È inoltre necessario inserire la direttiva Options per le directory dell'host virtuale, se desiderate che questo riconosca particolari caratteristiche.
Mediante la linea Options Includes, contenuta all'interno della sezione di direttive <Directory "/var/www/html">, gli include del server sono già abilitati. Tuttavia, se desiderate che un host virtuale riconosca che gli include del server siano autorizzati all'interno di /var/www/html, dovrete inserire una sezione nei tag del vostro host virtuale che sia simile alla seguente:
<Directory /var/www/html> Options Includes </Directory> |
La direttiva AllowOverride consente di stabilire 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.
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 specifica quali richieste possono accedere a 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 (ossia da tutti i client).
Deny funziona in modo simile ad allow, ma specifica quali accessi negare. La vostra DocumentRoot non è configurata per negare alcuna richiesta.
UserDir è il nome della sottodirectory contenente i file HTML personali dell'utente. Per default la sottodirectory si chiama public_html e deve essere presente nella directory home dell'utente. Per esempio, il server può ricevere la seguente richiesta:
http://vostro_dominio/~nome utente/foo.html |
Il server cercherà il file:
/home/username/public_html/foo.html |
Nell'esempio precedente, /home/username è la directory home dell'utente (ovviamente il percorso di default della directory home può essere differente sul vostro sistema).
Assicuratevi che i permessi della directory home dell'utente siano corretti, l'impostazione esatta è 0755. È necessario attivare i bit di lettura (r) e di esecuzione (x) nella directory public_html (0755 funziona correttamente). I file presenti in questa directory devono essere impostati almeno su 0644.
La direttiva DirectoryIndex indica il nome della pagina di default che viene restituita al client quando un utente richiede un indice di una directory, specificando uno slash (/) dopo il nome della directory.
Quando un utente richiede la pagina http://vostro_dominio/questa_directory/, riceve o la pagina DirectoryIndex, se esistente o un elenco di directory generato dal server. La configurazione di default di DirectoryIndex è index.html index.htm index.shtml index.php index.php4 index.php3 index.cgi. Il server cerca di individuare uno di questi file e restituisce il primo file che trova. Se non trova nessun file e per questa directory è impostata la direttiva Options Indexes, il server genera e restituisce un elenco, in formato HTML, delle sottodirectory e dei file contenuti nella directory.
AccessFileName attribuisce il nome al file che il server utilizza per accedere alle informazioni di controllo in ogni directory. In genere il server Web è impostato di default per utilizzare .htaccess, se esistente.
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 Web a qualunque file .htaccess (o a qualunque file che inizi con .ht).
Per default, il server Web chiede ai server proxy di non conservare nella cache alcun documento trasmesso sulla base del contenuto (ciò significa che tali documenti potrebbero essere modificati dall'inserimento del richiedente). Eliminando il commento dalla direttiva CacheNegotiatedDocs, il server proxy è autorizzato a conservare i documenti nella cache.
Per default UseCanonicalName è impostato su on. UseCanonicalName permette a un server di costruire un URL che faccia riferimento a sè stesso utilizzando ServerName e Port. Quando il server si riferisce a se stesso per rispondere a una richiesta di un client, utilizza questo URL. Se invece impostate UseCanonicalName su off, il server usa il valore inviato dal client per fare riferimento a sè stesso.
TypesConfig definisce il nome del file che contiene i tipi MIME di default (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.
DefaultType definisce il tipo MIME di default per i documenti che non sono riconosciuti. Secondo la configurazione di default, se il server Web non riconosce un tipo di file, lo considera come un file in formato testo.
I tag <IfModule> e </IfModule> raggruppano le direttive 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 simbolo "!" (punto esclamativo) è inserito prima del nome del modulo, le direttive vengono elaborate solo se il modulo non è compilato nel primo tag <IfModule>.
Il file mod_mime_magic.c è incluso nei tag IfModule. Questo file è simile al comando file di UNIX che legge i primi byte del file per determinarne il tipo e poi utilizza "numeri magici" e altre istruzioni per stabilire il tipo MIME del file.
Se il modulo mod_mime_magic viene compilato per Apache, i tag IfModule indicano al modulo dove si trova in questo caso il file con le istruzioni /usr/share/magic.
Il modulo mod_mime_magic non è compilato per default. Se desiderate utilizzarlo, consultate le informazioni su come aggiungere i moduli al vostro server contenute nella la sezione Aggiungere moduli al server.
HostnameLookups può essere impostato su on, off oppure double. Autorizzando la direttiva HostnameLookups (impostandola su on), il vostro server risolve in modo automatico l'indirizzo IP per ogni connessione che richiede un documento dal server Web. Risolvere l'indirizzo IP significa che il vostro server si connette una o più volte al DNS per individuare il nome dell'host che corrisponde a un particolare indirizzo IP. Se impostate HostnameLookups su double, il server esegue un DNS inverso doppio. In altre parole, dopo un lookup inverso viene eseguito un lookup diritto. Almeno uno degli indirizzi IP nel lookup diritto deve coincidere con l'indirizzo derivante dal primo lookup inverso.
Normalmente dovreste lasciare HostnameLookups impostato su off, perché le richieste del DNS aggiungono un carico eccessivo che può causare un rallentamento del server. Se il server è occupato, gli effetti di HostnameLookups sono molto evidenti.
HostnameLookups coinvolge Internet in generale. Si sommano tutte le connessioni individuali create per cercare ogni hostname. Dunque per evitare problemi con il server Web e per il bene di Internet in generale, è consigliabile lasciare la direttiva HostnameLookups impostata su off.
ErrorLog specifica il nome del file dove vengono registrati tutti gli errori del server. Per default il file di log errori è /var/log/httpd/error_log.
Il file di log degli errori è il miglior posto dove cercare se il server Web genera degli errori o per capire la causa dei malfunzionamenti.
LogLevel definisce il livello di "verbosità" dei messaggi d'errore registrati nel file di log. LogLevel può essere impostato su emerg, alert, crit, error, warn, notice, info o debug. Per default è impostato su warn (valore medio di verbosità).
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 indica il file di log e il suo formato. Nella configurazione di default del vostro server Web, CustomLog definisce il file di log in cui sono registrati gli accessi al server Web: /var/log/httpd/access_log. Se desiderate generare delle statistiche di accesso al sito Web, dovete sapere dove è memorizzato questo file.
CustomLog definisce il formato dei file di log. Il formato standard è:
remotehost rfc931 authuser [date] "request" status bytes |
Contiene il nome dell'host remoto. Se il nome non è disponibile tramite il DNS oppure se HostnameLookups è impostato su Off, il campo remotehost contiene l'indirizzo IP dell'host remoto.
Non è usato. In questo punto del file di log viene inserito il carattere -.
Se viene richiesta l'autenticazione, allora indica lo username che identifica l'utente. Di solito non viene usato ed è inserito il carattere -.
Data e ora della richiesta.
Stringa contenente la stessa richiesta inviata dal browser o dal client.
Codice dello stato HTTP restituito al browser o al client.
Dimensione del documento.
Il comando CustomLog può essere utilizzato per configurare i file di log specifici per registrare i "referer" (l'URL per la pagina Web collegata a una pagina sul vostro server) e/o gli "agent" (i browser utilizzati per ricevere le pagine Web dal vostro server Web). Le linee rilevanti di CustomLog sono commentate come illustrato nell'esempio. Se desiderate i due file di log, eliminate i commenti:
#CustomLog /var/log/httpd/referer_log referer #CustomLog /var/log/httpd/agent_log agent |
In alternativa potete impostare la direttiva CommonLog in modo che utilizzi un log combinato:
#CustomLog /var/log/httpd/access_log combined |
Un file di log combinato aggiunge i campi referer e agent al termine di ogni riga. Se desiderate usare un file di log combinato, eliminate il commento dalla direttiva CustomLog per impostare il log di accesso sul formato del file di log comune.
La direttiva ServerSignature aggiunge una linea contenente la versione del server Apache e il ServerName alle pagine Web generate dal server (per esempio nelle pagine contenenti i messaggi di errore). Per default ServerSignature è impostato su on. Se non volete aggiungere queste informazioni impostatelo su off. Potete anche inserire il tag EMail. In tal caso nelle pagine Web generate dal server viene aggiunta la stringa mailto:ServerAdmin.
L'impostazione Alias consente alle directory di trovarsi fuori da DocumentRoot. Qualunque URL che termina con l'alias, viene automaticamente risolto nel percorso dell'alias. Nella configurazione di default è già presente un alias. Il server Web può accedere alla directory icons anche se si trova fuori della directory DocumentRoot. La directory icons, un alias, è in realtà /var/www/icons/ e non /var/www/html/icons/.
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, poiché potrebbero essere visualizzati come documenti di testo. Sebbene possa non interessarvi se qualcuno vede (e usa) i vostri script CGI, qualche malintenzionato potrebbe scoprire come funzionano e sfruttare eventuali "falle" negli script. La directory cgi-bin è di default uno ScriptAlias della directory /cgi-bin/ e si trova in /var/www/cgi-bin/.
Per la directory /var/www/cgi-bin è stata impostata la direttiva Options ExecCGI, che abilita l'esecuzione degli script presenti nella directory.
Per maggiori informazioni sull'esecuzione di script CGI in directory diverse da cgi-bin, consultate la la sezione AddHandler e la la sezione Directory.
Quando una pagina Web viene rimossa, la direttiva Redirect può essere utilizzata per rimappare il vecchio URL con quello nuovo. Il formato è il seguente:
Redirect /percorso/foo.html http://nuovo_dominio/percorso/foo.html |
Se si riceve una richiesta HTTP per la pagina http://vostro_domino/percorso/foo.html, il server restituisce la pagina http://nuovo_dominio/percorso/foo.html. al client, che di solito cerca di richiamare il documento dal nuovo URL.
IndexOptions controlla l'aspetto degli elenchi delle directory generati del server. Se è impostata la direttiva Options Indexes (vedere la la sezione Options), il server Web genera l'elenco delle directory quando riceve una richiesta HTTP:
http://vostro_dominio/questa_directory/
Innanzitutto, il server Web cerca nella directory uno dei file specificati con la direttiva DirectoryIndex (per esempio index.html). Se i file non sono presenti, crea un file HTML contenente l'elenco dei file e delle directory. Potete modificare l'aspetto di queste pagine usando la direttiva IndexOptions (contenuta in httpd.conf).
La configurazione di default imposta FancyIndexing su on. Se FancyIndexing è attivato, facendo clic sull'intestazione della colonna potrete cambiare l'ordinamento dei file e delle directory. Con un altro clic sulla stessa intestazione, si inverte per esempio la sequenza da ordinamento ascendente a discendente. FancyIndexing visualizza un'icona per ogni tipo di file, in funzione dell'estensione. Se usate la direttiva AddDescription e attivate FancyIndexing, viene visualizzata una breve descrizione dei file nell'elenco delle directory generato dal server.
IndexOptions ha vari parametri per selezionare l'aspetto degli elenchi delle directory. I parametri possibili sono IconHeight e IconWidth, affinché il server includa i tag HEIGHT e WIDTH per le icone delle pagine Web generate dal server; IconsAreLinks per poter utilizzare le icone come link, insieme al nome del file.
Questa direttiva associa un'icona a 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.
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 "text".
AddIcon indica al server che icona visualizzare in funzione dell'estensione del file. Per esempio il server Web visualizza l'icona binary.gif per i file che hanno l'estensione .bin o .exe.
DefaultIcon specifica l'icona da visualizzare negli elenchi delle directory generati dal server per i file che non hanno altre icone specificate. La DefaultIcon per quei file è di default unknown.gif.
Potete utilizzare la direttiva AddDescription per visualizzare il testo che specifica certi file negli elenchi delle directory, generati dal server (inoltre dovrete abilitare FancyIndexing come una direttiva IndexOptions). Per specificare i file a cui questa direttiva deve essere applicata, potete nominare file specifici, espressioni con asterisco o estensioni di file. Per esempio potete utilizzare la seguente linea:
AddDescription "Un file che termina in .ni" .ni |
In ogni elenco generato dal server Web, tutti i file con l'estensione .ni hanno la descrizione Un file che termina in .ni dopo il nome del file. È inoltre necessario attivare la direttiva FancyIndexing.
ReadmeName definisce il nome del file (se esiste nella directory) che viene aggiunto alla fine dell'elenco. Nella configurazione di default, ReadmeName è impostato sul valore README.
HeaderName specifica il nome del file (se esiste nella directory) che viene inserito all'inizio degli elenchi delle directory generati dal server. Comer per ReadmeName, il server cerca di includere il file in formato HTML, se possibile, altrimenti in formato testo.
IndexIgnore può contenere estensioni di file, nomi di file parziali, espressioni con asterisco o nomi di file completi. Il server Web non individua i file che non corrispondono a nessuno dei parametri contenuti nell'elenco delle directory generato dal server.
AddEncoding definisce le estensioni dei file che hanno una particolare codifica. AddEncoding può essere utilizzato per indicare al browser (non tutti) di decomprimere certi file mentre vengono scaricati.
AddLanguage associa l'estensione di un file a una particolare lingua. Questa direttiva è utile se il server deve restituire i documenti HTML in base alla lingua del client specificata nel browser.
LanguagePriority vi permette di definire in che lingua trasmettere i file se nel browser non è stata specificata la lingua del client.
Usate la direttiva AddType per associare un tipo MIME a una estensione di 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 indica al vostro server di riconoscere l'estensione .shtml (per gli include del server):
AddType text/html .shtml |
Dovete includere la linea precedente all'interno dei tag dell'host virtuale, per ogni host virtuale che deve autorizzare gli include del server.
AddHandler mappa l'estensione di un file a gestori specifici. Per esempio, il gestore cgi-script può essere utilizzato per associare l'estensione .cgi a un file script CGI. Questo metodo funziona anche al di fuori della directory ScriptAlias, se seguite attentamente le istruzioni qui fornite.
Nel file httpd.conf è contenuta una riga AddHandler CGI:
AddHandler cgi-script .cgi |
È necessario innanzitutto eliminare il commento dalla linea, dopodiché Apache eseguirà gli script CGI per i file che terminano in .cgi, anche se sono al di fuori di ScriptAlias, configurato per default per localizzare la vostra directory /cgi-bin/ in /var/www/cgi-bin/.
Dovete inoltre configurare ExecCGI come Options per ogni directory che contiene uno script CGI. Consultate la la sezione Directory per maggiori informazioni sulla configurazione della directory ExecCGI. Accertatevi che i permessi siano impostati correttamente per gli script CGI e per le directory che li contengono, normalmente su 0755. Infine il proprietario della directory e quello dei file devono coincidere.
AddHandler deve essere inserito nella configurazione del vostro VirtualHost, anche se gli script CGI sono al di fuori di ScriptAlias.
Oltre agli script CGI, il vostro server Web utilizza anche AddHandler per elaborare gli HTML e i file imagemap analizzati dal server.
Action vi permette di specificare un contenuto MIME e uno script CGI. In questo modo, quando viene richiesto un file di un determinato tipo viene eseguito uno script CGI.
MetaDir specifica il nome della directory in cui il vostro server Web deve cercare i file che contengono meta informazioni (header HTTP extra) per includerle nella preparazione di documenti.
MetaSuffix specifica il suffisso del file che contiene meta informazioni (header HTTP extra), che dovrebbe trovarsi nella directory MetaDir.
Per default, in caso di problemi o errori, il vostro server Web mostra un messaggio di errore semplice (e di solito cifrato) al client richiedente. Invece di usare l'impostazione di default, potete utilizzare la direttiva ErrorDocument per personalizzare il messaggio da visualizzare in caso di errore o reindirizzare il client verso una URL locale o esterna. ErrorDocument associa il codice HTTP a una URL o a un messaggio che verrà restituito al client.
La direttiva BrowserMatch consente al server di definire le variabili d'ambiente e/o le azioni basate sul campo header 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 degli header HTTP per i browser che hanno problemi con queste azioni.
I tag <Location> e </Location> vi permettono di specificare il controllo dell'accesso basato sull'URL.
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 relative all'aggiunta di moduli per Apache, consultate la la sezione Aggiungere moduli al server.
I tag Location assegnano il nome alla directory /var/www/perl (un Alias /perl), ossia la directory dalla quale gli script perl vengono eseguiti. Se viene richiesto un documento con una URL contenente /perl nel suo percorso file, il vostro server Web controlla nella directory /var/www/perl/ per eseguire lo script corretto.
Nel file httpd.conf sono commentati altri esempi delle opzioni <Location>. Se volete attivare queste opzioni eliminate il commento nella sezione corretta dalle direttive.
Subito dopo le direttive Perl discusse sopra, il vostro file httpd.conf comprende una sezione di direttive per abilitare HTTP PUT (usato da Netscape Gold per inviare pagine Web al server Web). Se desiderate abilitare HTTP PUT, eliminate il commento all'intera sezione:
#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> |
Dovrete inoltre eliminare il commento dalle linee seguenti situate all'inizio del file httpd.conf in modo che il modulo mod_put venga caricato per Apache:
#LoadModule put_module modules/mod_put.so #AddModule mod_put.c |
Se desiderate autorizzare delle persone a connettersi dal vostro dominio per vedere i report sullo stato del server, dovreste eliminare il commento dalla sezione di direttive elencata qui sotto:
#<Location /server-status> # SetHandler server-status # Order deny,allow # Deny from all # Allow from .your_domain.com #</Location> |
Dovete sostituire .vostro_dominio.com con il vostro nome di dominio di secondo livello.
Se volete fornire diverse configurazioni di report (tra cui i moduli installati e le direttive di configurazione) alle richieste dal vostro dominio, eliminate il commento dalle linee seguenti:
#<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.com.
La prossima sezione utilizza i tag Location per permettere l'accesso alla documentazione presente nella directory /usr/share/doc selezionando l'indirizzo URL http://vostro_dominio/doc/qualsiasi.html. La direttiva permette l'accesso delle richieste provenienti dall'host locale.
Location può essere utilizzato per attivare una sezione che controlla gli attacchi al sito Web. Questi attacchi si servono di un vecchio bug precedente ad Apache 1.1. Se volete registrare queste richieste, eliminate il commento alle righe seguenti:
#<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 eseguito dal team di sviluppo di Apache.
Se eliminate il commento dalla entry IfModule inserendo invece la ProxyRequests, il vostro server Apache si comporterà anche da server proxy. È inoltre necessario caricare il modulo mod_proxy. Per informazioni su come caricare i moduli, consultate la la sezione Aggiungere moduli al server.
Il comando ProxyVia controlla l'HTTP Via: la linea relativa all'header viene inviata con le richieste o le risposte attraverso il server proxy Apache. L'header Via: mostra il nome dell'host se ProxyVia è impostato su On, il nome dell'host e la versione di Apache, se è impostato il comando Full. Qualsiasi linea Via: viene trasmessa senza essere modificata se è impostato Off e viene rimossa se è impostato Block.
Una serie di direttive relative alla cache sono commentate nel proxy IfModule menzionato sopra. Se state utilizzando la funzionalità server proxy e desiderate inoltre abilitare la cache proxy, è necessario eliminare il commento dalla direttiva cache come descritto. La configurazione di default per le vostre direttive cache dovrebbe essere idonea per molte configurazioni.
La CacheRoot configura il nome della directory che contiene i file memorizzati nella cache. La CacheRoot di default è /var/cache/httpd.
La direttiva CacheSize specifica quanto spazio potete usare in KB. La dimensione predefinita è di 5 KB.
La CacheGcInterval indica un numero di ore, dopo le quali i file nella cache vengono cancellati se la cache utilizza più spazio di quanto configurato in CacheSize. Il valore di default è 4 ore.
I documenti in HTML rimangono nella 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 impedisce che venga stabilita una data di scadenza per un documento privo di tale data. Il valore di default per CacheLastModifiedFactor è di 0.1, questo significa che la data di scadenza per questi documenti è pari a 1/10 della quantità di tempo trascorso dall'ultima modifica.
La entry CacheDefaultExpire specifica la scadenza in ore per un documento ricevuto che utilizza un protocollo che non supporta la data di scadenza. La configurazione di default è 1 ora.
Ogni documento ricevuto da un host e/o un dominio conforme alla configurazione in NoCache non viene memorizzato nella cache. Se conoscete host o domini dai quali non volete memorizzare documenti, eliminate il commento dalla direttiva NoCache e inserite il nome degli host e dei domini.
È necessario utilizzare la direttiva NameVirtualHost per un indirizzo IP (e un numero di porta se necessario) di ogni host virtuale che state configurando. La configurazione degli host virtuali basati sul nome viene utilizzata quando dovete configurare diversi virtual host per altrettanti domini, ma non potete (o non volete) usare indirizzi IP diversi per ogni host.
Nota Bene | |
---|---|
Non potete usare un host virtuale basato sul nome con il vostro server "sicuro". Ogni host virtuale configurato avrà solo connessioni HTTP "non sicure". Non potete usare gli host virtuali con il vostro server sicuro perché la handshake SSL (il momento in cui il browser accetta il certificato di autenticazione del server Web) si attiva prima della richiesta HTTP che identifica l'host virtuale corretto. In altre parole, l'autenticazione viene effettuata prima che ci sia qualunque identificazione di host virtuale basata sul nome. Se volete usare l'host virtuale con il server sicuro, è necessario usare l'host virtuale basato sull'indirizzo IP. |
Se usate un host virtuale basato sul nome eliminate il commento dalla direttiva NameVirtualHost e aggiungete l'indirizzo IP corretto. Poi inserite le informazioni relative ai differenti domini utilizzando i tag Virtual Host vicino al ServerName per ogni host virtuale e per qualsiasi altra direttiva di configurazione applicabile solo a quell'host virtuale.
I tag <VirtualHost> e </VirtualHost> si trovano accanto alle direttive di configurazione da applicare a un host virtuale. La maggior parte delle direttive di configurazione possono essere utilizzate all'interno dei tag degli host virtuali e poi vanno applicate solo a quel particolare host virtuale.
In alcune direttive di configurazione si trovano una serie di tag VirtualHost. Per maggiori informazioni sui virtual host, consultate la la sezione L'uso degli host virtuali.
La direttiva di configurazione SetEnvIf è utilizzata per disabilitare i keepalive HTTP e per consentire 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.
Le direttive SSL vengono incluse nel file httpd.conf del server per abilitare comunicazioni Web sicure utilizzando SSL e TLS.
Per maggiori informazioni sulle direttive SSL visitate il sito http://vostro_dominio/manual/mod/mod_ssl/. Alcune informazioni aggiuntive sulle direttive SSL sono disponibili all'indirizzo http://www.modssl.org/docs/2.7/ssl_reference.html/. Si tratta di un capitolo incluso nel documento Web sul modulo mod_ssl scritto da Ralf Engelschall. Lo stesso documento, lo User's Manual di mod_ssl, è disponibile all'indirizzo Web: http://www.modssl.org/docs/2.7/ ed è un ottimo riferimento per mod_ssl e per la cifratura in generale. Questo manuale fornisce informazioni generali sulla sicurezza del server Web al Capitolo 13.
Nota Bene | |
---|---|
Non modificate le vostre direttive SSL se non siete certi di quello che state facendo. Nella maggior parte dei casi è sufficiente utilizzare la configurazione di default. |