back to top

Configurare Apache: httpd.conf

In questa lezione vedremo come configurare Apache in base alle nostre esigenze attraverso l’editing del file httpd.conf che racchiude, appunto, la configurazione del web server.

La prima sezione del file httpd.conf, ("Section 1"), è dedicata all’ambiente in cui opera Apache ("Global Environment"). All’interno di essa troviamo alcune istruzioni fondamentali come il ServerType, attraverso cui viene indicata la modalità di funzionamento di Apache; nel nostro caso quest’ultima sarà: ServerType standalone, che consente di mantenere il Web server sempre attivo limitando i tempi di latenza. In pratica la modalità standalone permette ad Apache di lavorare come servizio in background ("demone") rispondendo autonomamente agli input provenienti dai client.

Abbiamo poi la ServerRoot, che stabilisce la directory in cui si trovano i file di configurazione e gli altri file necessari per il funzionamento di Apache.

Di seguito troviamo il PidFile, il cui percorso su Linux è in genere:

/var/run/httpd.pid

mentre in Windows sarà di solito in:

logs/httpd.pid

httpd.pid è in pratica il file in cui Apache scrive i processi in atto al momento del suo avvio.

Continuando a scorrere la Section 1, troveremo altre due opzioni: ResourceConfig e AccessConfig, rispettivamente correlate ai file "srm.conf" e "access.conf". Questi ultimi dovrebbero essere letti dal Web server una volta terminata la lettura di httpd.conf; in realtà nelle ultime versioni tali istruzioni sono ormai obsolete e le funzioni dei due file sono state incorporate da httpd.conf. Ne consegue che le opzioni ResourceConfig e AccessConfig appariranno commentate in Windows e settate su "/dev/null" in Linux.

Andando oltre visualizzeremo l’istruzione Timeout dalla funzione abbastanza intuitiva: quando il tempo di attesa per la soddisfazione dell’input inviato da un client supera il valore impostato espresso in secondi, allora viene inviato un messaggio d’errore. Di default il time out scatta dopo 300 secondi, ma può essere modificato a piacere soprattutto per limitare i problemi generati dal "traffico" sul proprio server Web.

Dopo Timeout abbiamo l’istruzione KeepAlive che può essere completata tramite le opzioni "On" ed "Off". Se settata in "On", KeepAlive permetterà di inviare più file attraverso una stessa connessione TCP. In caso contrario (sconsigliato), "Off" aprirà una nuova connessione ad ogni richiesta.

A KeepAlive segue l’istruzione MaxKeepAliveRequests, grazie alla quale potremo indicare un valore (di default 100) corrispondente alla quantità di richieste possibili per singola connessione TCP.

KeepAliveTimeout, di default impostato a 15, esprime in secondi il tempo che il Web Server dovrà aspettare per accogliere un’ulteriore richiesta prima che la connessione venga chiusa.

Sottolineiamo poi MaxRequestsPerChild: se httpd, il processo principale di Apache, è "padre", allora i suoi processi secondari saranno "figli". Grazie a questo parametro è possibile settare la quantità di richieste gestibili da ciascun processo subordinato; se indichiamo "0" (infinito), ogni processo figlio avrà la possibilità di gestire illimitate richieste. Consigliamo in ogni caso di specificare comunque un valore (anche in miliardi) in modo da evitare eccessivi sovraccarichi.

Segnaliamo infine il supporto per i DSO (Dynamic Shared Object). Questa voce si divide in due parti: "LoadModule" e "AddModule". Osservando queste istruzioni troveremo una serie di righe, molte delle quali commentate, che permettono di abilitare o disabilitare alcuni "moduli" o funzionalità addizionali. Quando viene decommentata, aggiunta o commentata una voce in "LoadModule" è necessario operare nello stesso modo sull’"AddModule" corrispondente.

Se per esempio decidiamo di installare PHP 5 come modulo aggiuntivo di Apache, per rendere operativa questa modifica dovremo aggiungere in corrispondenza dei "LoadModule" la riga non commentata

LoadModule php5_module "PATH/php/php5apache.dll"

e, in corrispondenza degli "AddModule", dovremo fare lo stesso scrivendo

AddModule mod_php5.c

Passiamo ora all’analisi delle istruzioni più importanti riportate nella "Section 2" del file di configurazione di Apache httpd.conf; come vedremo, questa sezione contiene voci correlate alla configurazione del Web server ("’Main’ server configuration").

Innanzitutto troviamo il riferimento alla porta di "ascolto" dei processi di Apache, di default la Port 80. Come abbiamo già avuto modo di sottolineare, è possibile modificare il numero di questa porta TCP rimanendo nell’ambito delle prime 1024 porte. Se per esempio nel nostro computer è installato un altro Web server che attende le richieste sulla porta 80, come IIS della Microsoft, potremo modificare quella di default di Apache in 81.

Andando oltre, troveremo altre opzioni sulle quali è possibile intervenire. Tra queste abbiamo l’indirizzo di posta del ServerAdmin che, se ciò non è già stato fatto in installazione, può essere modificato inserendo la nostra mail personale o di lavoro.

Il ServerName, cioè il nome della nostra macchina server, varia a seconda del dominio di appartenenza; se lavoriamo in locale e al di fuori di una rete potremo lasciare senza problemi la consueta dicitura "localhost".

La DocumentRoot, stà ha indicare il percorso che porta alla cartella in cui sono contenute le pagine del nostro sito Web. Questo parametro può essere variato a seconda delle nostre esigenze; generalmente avremo in Linux qualcosa come:

"/var/www/html"

mentre in Windows troveremo:

"C:/Programmi/Apache Group/Apache/htdocs"

Leggeremo poi una serie di voci di questo tipo:

<Directory "PATH_per_la_ROOT">
Options Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>

in esse viene impostata una directory recante direttive (container) per la configurazione del server. Delle direttive parleremo più approfonditamente tra poco. Andando avanti troveremo:

<IfModule mod_mime.c>
TypesConfig /PATH/mime.types
</IfModule>

Un’istruzione, quella appena proposta, con la quale viene indicato che, nel caso (if) in cui sia abilitato il "modulo per i MIME" ("mod_mime"), dovrà essere caricato il file/elenco con la lista dei MIME file type ("mime.types").

Ora passiamo a DefaultType, solitamente predefinito come "text/plain", che stabilisce la tipologia di file forniti da Apache.

Un’altra istruzione importante è ErrorLog, per la quale viene stabilito il percorso che dovrà portare ai "log" in cui verranno scritti gli errori conseguenti alle richieste non soddisfatte ("error_log"). Ad ErrorLog si accompagna un’opzione relativa al livello di debugging generalmente settata in "warn", un valore medio in una scala crescente che conta: "debug", "info", "notice", "warn", "error", "crit", "alert", "emerg".

Sono poi degni di nota i riferimenti alla direttiva Alias e al relativo "modulo"; di questa direttiva parleremo più avanti, per ora specificheremo il fatto che grazie a queste istruzioni è possibile definire un alias (URL "traslata") per una cartella destinata ad ospitare script CGI posizionata esternamente rispetto alla DocumentRoot e quindi non accessibile dal web.

Andando oltre troveremo alcune delle istruzioni più note dei Web Server, gli ErrorDocument 500, 404 e 403.

L’errore 500, conosciuto anche come "Internal server error" viene notificato nel caso in cui una condizione inaspettata (un errore interno al programma che gestisce il servizio) impedisca al server di soddisfare una richiesta del client.

L’errore 404, il notissimo "File Not Found", viene notificato quando il Web server non trova l’informazione richiesta. Le cause di questa notifica sono in genere due: un errore nella sintassi dell’URL o l’inesistenza della risorsa desiderata all’interno del percorso indicato.

L’errore 403, conosciuto anche come "accesso negato" ("Unauthorized user"), si verifica quando l’utente prova ad accedere ad una pagina "protetta" senza averne l’autorizzazione.

I messaggi di notifica degli ErrorDocument sono personalizzabili e possono consistere in un’informazione da inviare al client:

ErrorDocument 500 "The server made a boo boo

O in una pagina da visualizzare in alternativa a quella richiesta:

ErrorDocument 404 /missing.html

Terminiamo il nostro discorso riguardante le impostazioni di httpd.conf segnalando l’istruzione relativa al "mod_setenvif":

<IfModule mod_setenvif.c>
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" 
nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
rowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
</IfModule>

In essa vengono settate differenti opzioni per le risposte da inviare alle particolari richieste che possono pervenire da specifiche tipologie di browser.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.