Il software Apache è basato su moduli: tutte le funzionalità eccetto alcuni task di base sono gestite da moduli. Il software si è evoluto a tal punto che, anche l'HTTP viene elaborato da un modulo (http_core).
I moduli Apache possono essere compilati nel binario Apache al momento del build oppure caricati in modo dinamico al runtime. Per ulteriori informazioni sul caricamento dinamico dei moduli, fare riferimento alla Sezione 26.4.2, "Attivazione e disattivazione".
I moduli Apache possono essere suddivisi in quattro diverse categorie:
I moduli di base vengono compilati in Apache per impostazione predefinita. Apache in SUSE possiede solo mod_so (necessario per caricare altri moduli) e http_core compilati al suo interno. Tutti gli altri moduli sono disponibili come oggetti condivisi: anziché essere inclusi nel binario stesso del server, possono essere inclusi al runtime.
I moduli etichettati come estensioni sono inclusi nel pacchetto di programmi Apache ma non vengono generalmente compilati staticamente sul server. In SUSE Linux, queste estensioni sono disponibili come oggetti condivisi caricabili in Apache in fase di esecuzione.
I moduli contrassegnati come esterni non sono inclusi nella distribuzione ufficiale di Apache. SUSE Linux ne fornisce diversi disponibili per l'uso.
Gli MPM si occupano dell'accettazione e della gestione delle richieste a un server Web, rappresentando la parte centrale del software apposito.
Se si è seguito il sistema di installazione predefinito di Apache (descritto riportato nella Sezione 26.1.2, "Installazione"), questo verrà installato con tutti i moduli di base e di estensione, il modulo multiprocessing Prefork MPM e il modulo esterno PHP5.
È possibile installare moduli esterni addizionali avviando YaST e selezionando +. Ora scegliere + e cercare apache. Fra gli altri pacchetti, l'elenco dei risultati contiene tutti i moduli Apache esterni disponibili.
Utilizzando YaST, è possibile attivare o disattivare i moduli del linguaggio di script (PHP5, Perl, Python e Ruby) con la configurazione del modulo descritta nella Sezione 26.2.2.1, "Assistente di sistema: Server HTTP". Tutti gli altri moduli possono essere abilitati o disabilitati come descritto riportato nella Sezione 26.2.2.2.2, "Moduli del server".
Se si preferisce attivare o disattivare i moduli manualmente, utilizzare i comandi a2enmod mod_foo o a2dismod mod_foo, rispettivamente. a2enmod -l produce un elenco di tutti i moduli correntemente attivi.
![]() | Inclusione dei file di configurazione per i moduli esterni |
|---|---|
Se si sono attivati i moduli esterni manualmente, accertarsi di caricare i relativi file di configurazione in tutte le configurazioni di host virtuali. I file di configurazione per i moduli esterni sono situati in | |
Tutti i moduli di base e di estensione sono descritti in dettagli nella documentazione di Apache. Qui viene fornita una breve descrizione dei moduli più importanti. Per ulteriori dettagli su ciascun modulo, fare riferimento a http://httpd.apache.org/docs/2.2/mod/.
Fornisce direttive Alias e Redirect con le quali è possibile mappare un URI su una directory specifica (Alias) o reindirizzare un URL richiesto verso un'altra posizione Questo modulo è abilitato per impostazione predefinita.
I moduli di autenticazione forniscono vari metodi di autenticazione: autenticazione di base con mod_auth_basic o autenticazione classificata con mod_auth_digest. L'autenticazione classificata in Apache 2.2 è considerata sperimentale.
mod_auth_basic e mod_auth_digest devono essere combinati con un modulo di di fornitura di autenticazione mod_authn_* (ad esempio, mod_authn_file per autenticazione basata su file di testo) e con un modulo di autorizzazione mod_authz_* (ad esempio, mod_authz_user per autorizzazione utente).
Ulteriori su questo argomento sono disponibili nell'"Howto Autenticazione" in http://httpd.apache.org/docs/2.2/howto/auth.html.
Quando non è presente un file di indice, autoindex genera elenchi del contenuto della directory (ad esempio, index.html). L'aspetto di questi indici è configurabile. Questa modulo è abilitato per impostazione predefinita. Tuttavia, gli elenchi del contenuto delle directory sono disabilitati per impostazione predefinita tramite la direttiva Options; sovrascrivere questa impostazione nella configurazione dell'host virtuale. Il file di configurazione predefinito per questo modulo è situato in /etc/apache2/mod_autoindex-defaults.conf.
mod_cgi è richiesto per l'esecuzione di script CGI. Questo modulo è abilitato per impostazione predefinita.
Utilizzando questo modulo, Apache può essere configurato per comprimere in tempo reale determinati tipi di file prima di inviarli.
mod_dir fornisce la direttiva DirectoryIndex con la quale è possibile stabilire quali file sono inviati automaticamente quando viene richiesta una directory (per impostazione predefinita index.html). Fornisce inoltra una ridirezione automatica all'URI corretto quando una richiesta di directory non contiene una barra finale. Questo modulo è abilitato per impostazione predefinita.
Con mod_expires è possibile controllare la frequenza con la quale la cache del proxy e del browser aggiornano i documenti inviando un'intestazione Expires. Questo modulo è abilitato per impostazione predefinita.
mod_include consente di utilizzare Server Side Include (SSI), che fornisce una funzionalità di base per la generazione dinamica di pagine HTML. Questo modulo è abilitato per impostazione predefinita.
Fornisce una panoramica completa della configurazione del server in http://localhost/server-info/. Per motivi di sicurezza, è consigliabile limitare sempre l'accesso a questo URL. Per impostazione predefinita, solo localhost può accedere a questo URL. mod_info è configurato in /etc/apache2/mod_info.conf.
Con questo modulo è possibile configurare l'aspetto dei file di log di Apache. Questo modulo è abilitato per impostazione predefinita.
Il modulo mime verifica che i file vengano inviati con l'intestazione MIME corretta, basata sull'estensione del nome file; ad esempio text/html per i documenti HTML. Questo modulo è abilitato per impostazione predefinita.
Necessario per la negoziazione del contenuto. Per ulteriori informazioni, fare riferimento a http://httpd.apache.org/docs/2.2/content-negotiation.html. Questo modulo è abilitato per impostazione predefinita.
Fornisce la stessa funzionalità di mod_alias, ma offre più funzioni e flessibilità. Con mod_rewrite, è possibile reindirizzare gli URL in base a regole multiple, intestazioni e altro ancora.
mod_speling tenta di correggere automaticamente errori tipografici negli URL, quali errori con maiuscole/minuscole.
Abilita connessioni cifrate fra il server Web e i client. Per ulteriori informazioni, vedere la Sezione 26.6, "Impostazione di un server Web sicuro con SSL". Questa modulo è abilitato per impostazione predefinita.
Fornisce informazioni su attività e prestazioni del server all'indirizzo http://localhost/server-status/. Per motivi di sicurezza, è consigliabile limitare sempre l'accesso a questo URL. Per impostazione predefinita, solo localhost può accedere a questo URL. mod_status è configurato in /etc/apache2/mod_status.conf.
mod_suexec consente di eseguire script CGI come utente e gruppo differenti. Questa modulo è abilitato per impostazione predefinita.
Abilita directory specifiche dell'utente in ~. È necessario specificare la direttiva user/UserDir nella configurazione. Questa modulo è abilitato per impostazione predefinita.
SUSE Linux offre due diversi moduli per il multiprocessing (MPM) per l'utilizzo con Apache.
MPM prefork implementa un server Web non basato su thread e con funzioni di prefork. Rende il server Web simile ad Apache versione 1.x, poiché isola ciascuna richiesta e la gestisce duplicando un processo secondario separato. In questo modo, le richieste problematiche non hanno conseguenze sulle altre, evitando un blocco del server Web.
Se da un lato garantisce stabilità con questo approccio basato sui processi, MPM prefork consuma molte più risorse di un altro programma equivalente, MPM worker. MPM prefork è considerato l'MPM predefinito per i sistemi operativi basati su Unix.
![]() | Gli MPM nella presente documentazione |
|---|---|
Questo documento presume l'utilizzo di Apache con l'MPM prefork. | |
MPM worker propone un server Web multithread. Un thread è una forma "più leggera" di processo. Il vantaggio di un thread rispetto a un processo è il consumo più basso di risorse. Invece di duplicare solamente processi secondari, l'MPM worker supporta richieste utilizzando thread con processi del server. I processi secondari di tipo prefork sono multithread. Questo approccio migliora le prestazioni di Apache, consumando un numero inferiore di risorse di sistema rispetto all'MPM prefork.
Uno dei principali svantaggio è la stabilità dell'MPM worker: se un thread viene danneggiato, tutti i thread di un processo possono subirne le conseguenze. La conseguenza peggiore è un arresto del server. Gli errori interni del server, dovuti a thread incapaci di comunicare con le risorse di sistema, possono verificarsi soprattutto per l'utilizzo di CGI con Apache sottoposto a un carico eccessivo. Un altro punto a sfavore dell'utilizzo dell'MPM worker con Apache è che non tutti i moduli di Apache disponibili sono thread-safe, per questo motivo non possono essere utilizzati insieme a MPM worker.
![]() | Utilizzo di moduli PHP con gli MPM |
|---|---|
Non tutti i moduli PHP disponibili sono thread-safe. L'utilizzo dell'MPM worker con mod_php è fortemente sconsigliato. | |
Di seguito vengono elencati tutti i moduli esterni forniti con SUSE Linux. La documentazione del modulo si trova nella directory indicata.
FastCGI è un'estensione CGI indipendente dal linguaggio, scalabile e aperta che fornisce alte prestazioni senza le limitazioni delle API specifiche del server. Le applicazioni FastCGI sono molto veloci, in quanto permanenti. Non vi è alcun overhead dovuto ad avvio su richiesta.
Nome pacchetto: apache2-mod_fastcgi
|
File di configurazione: /etc/apache2/conf.d/mod_fastcgi.conf
|
Ulteriori informazioni: /usr/share/doc/packages/apache2-mod_fastcgi
|
mod_perl consente di eseguire script Perl con un interprete incorporato. L'interprete permanente incorporato nel server evita l'overhead dovuto all'avvio di un interprete esterno e la penalità di avvio di Perl.
Nome pacchetto: apache2-mod_perl
|
File di configurazione: /etc/apache2/conf.d/mod_perl.conf
|
Ulteriori informazioni: /usr/share/doc/packages/apache2-mod_perl
|
PHP è linguaggio di script HTML lato server, multipiattaforma, incorporato.
Nome pacchetto: apache2-mod_php5
|
File di configurazione: /etc/apache2/conf.d/php5.conf
|
Ulteriori informazioni: /usr/share/doc/packages/apache2-mod_php5
|
mod_python consente di incorporare Python nel server HTTP Apache per ottenere un notevole miglioramento delle prestazione e maggiore flessibilità nella progettazione di applicazioni basate su Web.
Nome pacchetto: apache2-mod_python
|
Ulteriori informazioni: /usr/share/doc/packages/apache2-mod_python
|
mod_ruby incorpora l'interprete Ruby nel server Web Apache e consente l'esecuzione degli script CGI Ruby in modo nativo. Questi script si avviano molto più rapidamente quando si utilizza mod_ruby.
Nome pacchetto: apache2-mod_ruby
|
Ulteriori informazioni: /usr/share/doc/packages/apache2-mod_ruby
|
Questo modulo fornisce connettori fra Apache e un servlet container Tomcat.
Nome pacchetto: mod_jk-ap20
|
Ulteriori informazioni: /usr/share/doc/packages/mod_jk-ap20
|
Gli utenti avanzati possono estendere Apache scrivendo moduli personalizzati. Per sviluppare moduli per Apache o per compilare moduli di terzi, è necessario disporre del pacchetto apache2-devel unitamente agli strumenti di sviluppo corrispondenti. apache2-devel contiene inoltre gli strumenti apxs2, necessari alla compilazione di moduli aggiuntivi per Apache.
apxs2 abilita la compilazione e l'installazione di moduli da sorgente (comprese le modifiche necessarie per i file di configurazione) che crea dynamic shared object (DSO, oggetti dinamici condivisi) caricabili in Apache al runtime.
I binari apxs2 si trovano nella posizione/usr/sbin:
/usr/sbin/apxs2: è adatto per generare un modulo di estensione che funziona con qualsiasi MPM. La posizione di installazione è /usr/lib/apache2.
/usr/sbin/apxs2-prefork: è adatto per il prefork dei moduli MPM. La posizione di installazione è /usr/lib/apache2-prefork.
/usr/sbin/apxs2-prefork: è adatto per i moduli di lavoro MPM.
apxs2 installa i moduli in modo tale che possano essere utilizzati per tutti gli MPM. Gli altri due programmi installano i moduli in modo tale che possano essere utilizzati solo per i rispettivi MPM. apxs2 installa i moduli in /usr/lib/apache2, apxs2-prefork e apxs2-worker vengono installati in /usr/lib/apache2-prefork o /usr/lib/apache2-worker.
Installare e attivare un modulo dal codice sorgente con i comandi cd /path/to/module/source; apxs2 -cia mod_foo.c (-c compila il modulo, -i lo installa e -a lo attiva). Le altre opzioni diapxs2 sono descritte alla manpage apxs2(1).