La compressione HTTP con il modulo gzip di Nginx è un’importante feature che ci permette di migliorare il rendimento del sito web hostato principalmente su diversi fronti:
- Riduzione di banda totale e transfert rate del nostro sito web.
- Best practices di Google per quanto riguarda il SEO e la velocità di risposta del sito internet.
- Velocizzare il tempo di caricamento delle pagine web.
Controindicazioni principali:
- Comprimere con gzip aumenta il carico sulle CPU del server.
- Il processo di compressione e decompressione può in alcuni casi essere controproducente se si tratta di pochi bytes.
Nei pacchetti Linux precompilati il modulo Nginz gzip static è quasi sempre attivo di default. Nel caso si sia compilato Ngix partendo dai sorgenti, controllare se si è passato l’opzione seguente in fase di compilazione:
./configure --with-http_gzip_static_module
La compressione HTTP con il modulo gzip static di Nginx è attivabile nei seguenti contesti:
http
server
location
Di seguito si trova un esempio di configurazione tipica del modulo di compressione gzip.
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/html text/css application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml application/rdf+xml;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
Alcune piccole delucidazioni sulla configurazione:
- gzip_types: con questa direttiva possiamo specificare quali tipi di MIME-Types desideriamo comprimere. Di default è abilitato solo text/html.
- gzip_min_length: determiniamo la dimensione minima dei file che vogliamo comprimere. Abbassare drasticamente questo parametro può provocare maggior carico sulle CPU del server e tempi di risposta aumentati che quindi non giustificano il risparmio ottenuto dalla compressione.
- gzip_disable: anche se ormai si assottiglia sempre più la percentuale di visitatori che navigano con browser che non supportano la compressione HTTP, questa direttiva ci permette di non creare problemi agli utenti di Internet Explorer fino al 6.
- gzip_vary: abilita il response header “Vary: Accept-Encoding”. Questa direttiva fa si che IE non esegua caching dei contenuti (Bug noto). Tratto da wikipedia: “Tells downstream proxies how to match future request headers to decide whether the cached response can be used rather than requesting a fresh one from the origin server”.