mod_gzip · 12 min read · Sep 14, 2025

mod_gzip - servire contenuti compressi dal server web Apache - Pagina 6

Autore: Michael Schröpl

La quantità esatta delle funzioni richieste deve essere descritta da ulteriori direttive di configurazione Apache che diventano disponibili con l’integrazione del modulo mod_gzip.

Una documentazione veramente completa dell’effetto di queste direttive non è attualmente disponibile; in generale si assume che

  • quasi tutto può essere utilizzato in ogni ambiente, cioè - nell’intero ambito del server,
  • in host virtuali separati,
  • in directory o anche
  • in file .htaccess e
  • fondamentalmente si applicano le procedure di sovrascrittura standard di Apache - tranne per le direttive che specificano la selezione dei contenuti da comprimere, dove le cose diventano un po’ più complicate.

La configurazione descritta di seguito non è realmente destinata a essere copiata ciecamente nella propria configurazione - il suo intento è piuttosto quello di darti un’idea di quante opzioni sono fornite. E ci sono molte opzioni - almeno se “vuoi solo ottenere dati di output compressi” …

| caricamento | responsabilità | precompresso | burocrazia | gestione dei dati | dimensioni dei file | requisiti | filtri | codifica di trasferimento | registrazione | proxy |

#######################################  
### Direttive di configurazione Apache ###  
###   per mod_gzip 1.3.26.1a        ###  
#######################################  

  
##########################  
### caricamento del modulo ###  
##########################  
  
# ---------------------------------------------------------------------  
# carica DLL / Win32:  
# LoadModule gzip_module modules/ApacheModuleGzip.dll  
#  
# carica DSO / UNIX:  
# LoadModule gzip_module modules/mod_gzip.so  
#  
# (nessuno dei due se il modulo è stato compilato staticamente;  
#  il nome esatto del file può dipendere dal metodo di compilazione esatto utilizzato  
#  per questo modulo)
# ---------------------------------------------------------------------  
    
########################  


### responsabilità ###  
########################  
  
# ---------------------------------------------------------------------  
# usare mod_gzip?  
  mod_gzip_on                   Sì  
# (puoi abilitare mod_gzip all'interno della configurazione centrale del server  
#  ma disabilitarlo all'interno di alcune directory o host virtuali utilizzando questa direttiva.)  
# ---------------------------------------------------------------------  


######################################  
### file staticamente precompressi ###  
######################################  
  
# ---------------------------------------------------------------------  
# lasciare che mod_gzip esegua 'negoziazione parziale dei contenuti'?  
  mod_gzip_can_negotiate        Sì  
# (se questa opzione è attiva e un file statico deve essere servito in forma compressa,  
#  allora mod_gzip cercherà una versione precompressa statica di questo file con un'estensione aggiuntiva definita - vedi la prossima  
#  direttiva - che verrebbe consegnata con priorità. Questo consentirebbe  
#  di evitare di comprimere ripetutamente lo stesso file statico e quindi  
#  risparmiare tempo CPU.  
#  Non è fornita alcuna cache dinamica di questo file; attualmente l'utente  
#  stesso è responsabile della creazione e dell'aggiornamento del contenuto del file precompresso.
#  A partire dalla versione 1.3.19.2a mod_gzip riconosce automaticamente se  
#  un file precompresso staticamente è più vecchio del suo originale non compresso e in questo caso servirà il contenuto del file originale  
#  in forma non compressa - per servire dati corretti piuttosto che  
#  obsoleti ...)
# ---------------------------------------------------------------------
# estensione (suffisso) per file staticamente precompressi  
  mod_gzip_static_suffix        .gz  
  AddEncoding              gzip .gz  
# (effetto: vedi direttiva precedente; questa stringa sarà aggiunta al  
#  nome del file originale.  
#  assicurati di configurare la codifica 'gzip' per questa estensione,  
#  perché mod_gzip non serve il contenuto stesso ma genera semplicemente  
#  una redirezione interna di Apache a questo URL. Pertanto, la rimanente  
#  configurazione di Apache è responsabile per impostare correttamente l'intestazione 'Content-Encoding'  
#  ...  
#  prima della versione 1.3.19.2a questo valore non era configurabile.)
# ---------------------------------------------------------------------
# aggiornamenti automatici per file staticamente precompressi  
  mod_gzip_update_static        No  
# (se impostato su 'Sì', questa direttiva (essendo nuova nella versione 1.3.26.1a) causerebbe mod_gzip  
#  di aggiornare automaticamente una versione obsoleta di qualsiasi  
#  file staticamente precompresso durante la richiesta, cioè comprimere il  
#  file richiesto originariamente e *sovrascrivere* il file variante  
#  precompresso con esso!  
#  per ogni aggiornamento automatico di questo tipo, mod_gzip scriverà un messaggio  
#  di gravità 'avviso' nel file error_log di Apache.  
#  mentre fa ciò, mod_gzip leggerà direttamente il contenuto del file originale.  
#  quindi questo contenuto *non può* essere interpretato da nessun altro modulo Apache  
#  durante la richiesta. questo potrebbe *non* essere ciò che desideri - si spera  
#  sarà ciò che la maggior parte degli utenti desidera, perché funziona *velocemente* in questo modo.  
#  usa questa configurazione con molta attenzione e assicurati di non  
#  causare involontariamente la sovrascrittura di file preziosi all'interno dell'albero URL.  
#  questa *non è* una funzione da utilizzare per server di hosting di massa, specialmente  
#  perché mod_gzip potrebbe riscontrare problemi di controllo degli accessi lì - il  
#  userid sotto cui vengono eseguiti i processi Apache deve avere accesso in scrittura  
#  ai file precompressi di tutti gli utenti, il che potrebbe non essere automaticamente  
#  il caso.)  
# [gestione degli errori di mod_gzip in questa situazione??? cosa verrà servito?]
# ---------------------------------------------------------------------  

###################  
### burocrazia ###  
###################  
  
# ---------------------------------------------------------------------  
# visualizza stato per mod_gzip  
  mod_gzip_command_version      '/mod_gzip_status'  
# (definisce un URL per visualizzare lo stato di mod_gzip; può essere specificato  
#  individualmente per ogni installazione e protetto contro l'accesso tramite  
#   sezione per motivi di privacy)  
# ---------------------------------------------------------------------  
# La visualizzazione dello stato apparirà così:  
#       mod_gzip è disponibile...  
#       mod_gzip_version = 1.3.26.1a  
#       mod_gzip_on = Sì/No  
# e fornirà quindi informazioni su  
# - mod_gzip installato sul server e funzionante correttamente,  
# - quale versione è stata installata e  
# - se mod_gzip è stato impostato 'attivo' per questa posizione  
#   (-> mod_gzip_on)  
# ---------------------------------------------------------------------  


#######################  
### gestione dei dati ###  
#######################  
  
# ---------------------------------------------------------------------  
# Directory di lavoro per file temporanei e la cache di compressione  
# se non specificato, vengono utilizzati i seguenti valori predefiniti:  
# [Win32=c:\temp], [UNIX=/tmp]  
# mod_gzip_temp_dir             /tmp  
# (Questa directory deve già esistere e l'userid utilizzato per  
#  eseguire il server Apache deve avere accesso in lettura e scrittura a questa  
#  directory.  
#  A differenza di altre direttive Apache, qui deve essere specificato  
#  un nome di percorso assoluto; un valore relativo non sarà interpretato  
#  relativamente a ServerRoot.  
#  Questo nome di percorso non deve essere terminato con '/'.  
#  Per massime prestazioni, questa directory dovrebbe trovarsi su un disco RAM,  
#  se il file system non è già in fase di caching in modo efficiente  
# ---------------------------------------------------------------------  
# Salva file di lavoro temporanei [Sì, No]  
  mod_gzip_keep_workfiles       No  
# (un file per richiesta HTTP - impostato su 'sì' solo per scopi di debug!)  
# ---------------------------------------------------------------------  


##################  
### dimensioni dei file ###  
##################  
  
# ---------------------------------------------------------------------  
# dimensione minima (in byte) per i file da comprimere  
  mod_gzip_minimum_file_size    500  
# (per file molto piccoli, la compressione produrrà solo piccoli guadagni assoluti  
#  [risparmierai comunque circa il 50% del contenuto, ma alcuni ulteriori  
#  500 byte di intestazioni HTTP e TCP rimarranno sempre non compressi],  
#  ma produrrà comunque carico CPU sia per il client che per il server.  
#  mod_gzip imposterà automaticamente valori inferiori a 300 byte per  
#  questa direttiva esattamente a questo valore 300.)  
# ---------------------------------------------------------------------  
# dimensione massima (in byte) per i file da comprimere  
  mod_gzip_maximum_file_size    500000  
# (per file molto grandi, la compressione potrebbe richiedere piuttosto tempo e  
#  quindi ritardare l'inizio della trasmissione.  
#  Inoltre, una limitazione a questo punto impedisce al server di  
#  produrre output di dimensioni illimitate in caso di un ciclo infinito  
#  all'interno di uno script CGI - o persino di provare a comprimere dati in streaming -  
#  il che potrebbe altrimenti causare la creazione di un file temporaneo di  
#  qualsiasi dimensione e persino riempire l'intero disco rigido.  
#  D'altra parte, la compressione avrà un effetto soggettivo molto più percepibile  
#  per file di grandi dimensioni ... quindi assicurati di ottimizzare questo  
#  in base alle tue esigenze.)  
# ---------------------------------------------------------------------  
# dimensione massima (in byte) per i file da comprimere in memoria  
  mod_gzip_maximum_inmem_size   60000  
# (file più grandi saranno compressi nella directory dei file temporanei; adatta  
#  questo valore alla memoria principale disponibile del tuo server.  
#  In mod_gzip 1.3.19.x valori più grandi saranno automaticamente limitati a  
#  60000 perché si dice che alcuni sistemi operativi abbiano problemi  
#  ad allocare più di 64 kb di memoria alla volta.  
# ---------------------------------------------------------------------  


####################  
### requisiti ###  
####################  
  
# (vedi capitolo sulla cache per problemi quando si utilizzano queste direttive.)  
# ---------------------------------------------------------------------  
# Versione HTTP richiesta del client  
# Valori possibili: 1000 = HTTP/1.0, 1001 = HTTP/1.1, ...  
# Questa direttiva utilizza gli stessi valori numerici del protocollo che Apache utilizza  
#  internamente  
  mod_gzip_min_http             1000  
# (Utilizzando questa direttiva puoi escludere vecchi browser, motori di ricerca  
#  ecc. dalla procedura di compressione: se l'agente utente non  
#  dichiara di essere in grado di comprendere almeno il livello HTTP  
#  specificato qui, verranno consegnati solo dati non compressi - indipendentemente  
#  da ciò che altro afferma di essere in grado di fare. Il valore di '1001' escluderà  
#  in particolare Netscape 4.x. e molti server proxy.)  
# ---------------------------------------------------------------------
# metodi HTTP da gestire  
# Valori possibili: 'GET', 'POST' o un elenco di entrambi i valori.  
  mod_gzip_handle_methods        GET POST  
# (Utilizzando questa direttiva puoi escludere particolarmente le richieste POST  
#  dalla procedura di compressione. Ci sono casi noti in cui la  
#  gestione di queste richieste da parte delle versioni precedenti di mod_gzip potrebbe causare  
#  problemi.  
#  Prima della versione 1.3.19.2a questo valore non era configurabile.)
# ---------------------------------------------------------------------  


###############  
### filtri ###  
###############  
  
# ---------------------------------------------------------------------  
# quali file devono essere compressi?  
#  
# L'ordine di elaborazione durante ciascuna delle due fasi non è importante,  
# ma per attivare la compressione del contenuto di una richiesta, questa richiesta  
# a) *deve corrispondere a almeno una regola di inclusione in ciascuna delle due fasi* e  
# b) *non deve corrispondere a una regola di esclusione in nessuna delle due fasi.*  
# Queste regole non sono minime, sono intese solo come esempio.  
#
# Nota che tutti i valori dei parametri delle direttive in questa sezione sono  
# valutati come espressioni regolari, e *non* in modo case-sensitive.
# ---------------------------------------------------------------------  
# fase 1: (reqheader, uri, file, handler)  
# ========================================  
# NO:   browser speciali rotti che richiedono contenuti gzipped  
#       ma poi non sono in grado di gestirli correttamente  
  mod_gzip_item_exclude         reqheader  "User-agent: Mozilla/4.0[678]"
# A partire dalla versione 1.3.19.2a *sconsiglio di utilizzare filtri*  
# *per User-agents*, poiché questo causerà la generazione di intestazioni HTTP 'Vary: User-Agent',  
# rendendo così la vita più difficile per i server proxy.
#  
# JA:   documenti HTML  
  mod_gzip_item_include         file       \.html$  
#  
# NO:   includere file / JavaScript & CSS (a causa di bug di Netscape4)  
  mod_gzip_item_exclude         file       \.js$  
  mod_gzip_item_exclude         file       \.css$  
#  
# SÌ:  script CGI  
  mod_gzip_item_include         file       \.pl$  
  mod_gzip_item_include         handler    ^cgi-script$  
#  
# fase 2: (mime, rspheader)  
# ===========================  
# SÌ:  normali file HTML, normali file di testo, elenchi di directory Apache  
  mod_gzip_item_include         mime       ^text/html$  
  mod_gzip_item_include         mime       ^text/plain$  
  mod_gzip_item_include         mime       ^httpd/unix-directory$  
#  
# NO:   immagini (GIF ecc., raramente risparmieranno qualcosa)  
  mod_gzip_item_exclude         mime       ^image/  
# ---------------------------------------------------------------------  
# In effetti mod_gzip controlla solo i primi 4 caratteri del 1°  
# operando (nel caso di uri anche solo i primi 2 caratteri, per consentire  
# valori come url).  
# ---------------------------------------------------------------------  
# La tabella per le regole mod_gzip_item (includere ed escludere) non può contenere  
# più di 256 voci; quando questo numero viene superato, mod_gzip  
# emetterà il messaggio "mod_gzip: ERRORE: L'indice degli elementi è pieno"  
# e segnalerà un errore di configurazione al server Apache.  
# ---------------------------------------------------------------------  
# I valori delle direttive descritti qui sono intesi per descrivere le richieste  
# selezionate per la compressione *nel modo più preciso possibile*.  
# Soprattutto per le regole mime deve essere chiaro che l'intestazione HTTP  
# 'Content-Type' (che sarà controllata da mod_gzip per questa regola)  
# in alcuni casi può contenere non solo un tipo MIME ma anche una  
# descrizione del set di caratteri (charset).  
# Se questo è il caso per le richieste da gestire, allora è necessario  
# rimuovere il carattere '$' alla fine del valore corrispondente in modo che ora  
# solo il prefisso di questo valore sarà testato per la corrispondenza.  
# ---------------------------------------------------------------------  


##########################  
### codifiche di trasferimento ###  
##########################  
  
# ---------------------------------------------------------------------  
# Consenti a mod_gzip di eliminare l'intestazione HTTP  
#    'Transfer-encoding: chunked'  
# e unire i chunk in un unico pacchetto (compressibile)  
  mod_gzip_dechunk              Sì  
# (questo è richiesto per gestire diversi tipi di contenuti generati dinamicamente,  
# specialmente per pagine CGI e SSI, ma anche per pagine prodotte  
# da alcuni interpreti di Servlet Java.  
# ---------------------------------------------------------------------  


###############  
### registrazione ###  
###############  
  
# ---------------------------------------------------------------------  
# Formato di log esteso (per testare l'effetto della compressione)  
  LogFormat                     "%h %l %u %t \"%V %r\" %  
# ---------------------------------------------------------------------  
# Crea file di log aggiuntivo  
  CustomLog                     logs/mod_gzip.log common_with_mod_gzip_info2  
# (sicuramente puoi ridefinire il formato del tuo file di log normale, ma potresti anche  
#  mantenere il suo formato standard compatibile per la valutazione da parte di strumenti di analisi web standard. Quindi creiamo semplicemente un altro file di log.)  
# ---------------------------------------------------------------------  
# Computazione del volume dei file consegnati all'interno dell'access_log di Apache:  
# conta la dimensione dell'intestazione HTTP (in byte) come parte della dimensione totale dell'output  
  mod_gzip_add_header_count     Sì  
# (Questo sarà più della pura documentazione del contenuto, ma descriverà in modo più  
#  realistico il traffico totale di output della richiesta HTTP)  
# ---------------------------------------------------------------------

###############  
### proxy ###  
###############  
  
# ---------------------------------------------------------------------  
# invio di un'intestazione HTTP 'Vary'  
  mod_gzip_send_vary            On  
# (vedi capitolo sulla cache per questa direttiva.)  
#  *non cambiare questo a meno che tu non sappia esattamente cosa stai facendo!*  
# ---------------------------------------------------------------------
  

Ordine durante il caricamento dei moduli

Quando aggiungi questo modulo dinamicamente, devi tenere a mente che mod_gzip dovrebbe essere specificato come ultimo dei vari LoadModule direttive da utilizzare.

Questo perché Apache costruirà internamente uno stack dalle LoadModule direttive e successivamente lo valuterà in ordine inverso.

mod_gzip si aggancia alla routine type_checker di Apache; ma solo il primo di tutti i moduli che dichiarano di essere responsabili della gestione di una richiesta (ad es. ColdFusion e SSL cercheranno di farlo) sarà realmente attivato da Apache. Quindi mod_gzip deve essere attivato prima di quei moduli il cui output vuole reindirizzare in se stesso e poi post-elaborare - fintanto che questi moduli cercano di utilizzare lo stesso type_checker interfaccia … se non lo fanno, allora può funzionare indipendentemente da questo ordine di direttive.

Durante il messaggio di avvio di Apache (che può essere trovato ad esempio all’interno del file di log degli errori di Apache) i moduli con specifiche versioni individuali possono essere elencati esattamente nell’ordine in cui appaiono all’interno della catena di moduli; lì mod_gzip deve essere elencato prima di altri moduli il cui output è destinato a essere compresso.

Posizione originale di questo documento:

http://www.schroepl.net/projekte/mod_gzip/config.htm

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.