GNU/Linux >> Linux Esercitazione >  >> Debian

Come risparmiare traffico con nginxs HttpGzipModule su Debian Jessie

In questo tutorial, descriverò come configurare HttpGzipModule su un server web nginx (su Debian Jessie). HttpGzipModule consente a nginx di comprimere i file e consegnarli a client (ad es. browser) in grado di gestire il contenuto compresso come fanno i browser più moderni. Con HttpGzipModule è possibile comprimere file HTML, CSS, Javascript, testo o XML a ca. 20 - 30% delle loro dimensioni originali, risparmiando così traffico sul server e rendendo più felici gli utenti del modem.

La compressione dei file provoca un carico leggermente superiore sul server, ma secondo la mia esperienza, questo è compensato dal fatto che i tempi di connessione dei client al server diminuiscono molto. Ad esempio, un utente modem che ha impiegato sette secondi per scaricare un file HTML non compresso ora potrebbe aver bisogno solo di due secondi per lo stesso file compresso.

Utilizzando HttpGzipModule non devi temere di escludere utenti con browser meno recenti che non possono gestire contenuti compressi. Il browser negozia con il server prima che qualsiasi file venga trasferito e, se il browser non ha la capacità di gestire il contenuto compresso, il server consegna i file non compressi.

1 Nota preliminare

Suppongo che tu abbia una configurazione nginx funzionante sul tuo server Debian, ad es. come mostrato in questo tutorial: Installazione di Nginx con PHP (come PHP-FPM) e MariaDB (LEMP) su Debian 8

2 Configurazione di HttpGzipModule

Apri /etc/nginx/nginx.conf:

nano /etc/nginx/nginx.conf

Scoprirai che la compressione gzip è già abilitata (nella sezione http {}):

[...]
http {
[...]
##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

[...] } [...]

gzip su; abilita la compressione gzip.

gzip_disable "MSIE [1-6]\.(?!.*SV1)"; disabilita la compressione gzip per i browser che non la supportano (in questo caso MS Internet Explorer prima della versione 6 SV1).

Naturalmente, possiamo mettere a punto questa configurazione (puoi trovare un elenco di possibili direttive di configurazione su http://nginx.org/en/docs/http/ngx_http_gzip_module.html):

gzip_http_versione 1.1; - Ciò abilita la compressione gzip per la richiesta HTTP versione 1.1. Poiché l'intestazione Content-Length non è impostata, ciò renderà impossibile Keepalis con la versione 1.0.

gzip_variante; - Questo imposta l'intestazione della risposta Vary:Accept-Encoding. Alcuni proxy presentano un bug in quanto forniscono contenuto compresso a browser che non lo supportano. Impostando l'intestazione Vary:Accept-Encoding, indichi ai proxy di archiviare sia una versione compressa che una non compressa del contenuto.

gzip_comp_livello 6; - Questo è il livello di compressione (tra 1 e 9) dove 1 è la compressione minima (la più veloce) e 9 è la più (lenta).

gzip_proxied qualsiasi; - Questo configura come devono essere gestite le richieste provenienti da un proxy. qualsiasi mezzo abilita la compressione per tutte le richieste.

gzip_types testo/testo normale/testo html/applicazione css/applicazione json/testo x-javascript/applicazione xml/applicazione xml/testo xml+rss/applicazione javascript/testo javascript/x-js; - Questo dice a nginx quali tipi di file comprimere (testo/html è sempre compresso). Poiché i file Javascript potrebbero avere tipi di file diversi su ciascun server, ho incluso diversi tipi MIME Javascript possibili (lo stesso vale per XML).

gzip_buffers 16 8k; - Questo assegna il numero e la dimensione dei buffer di compressione. L'impostazione predefinita è gzip_buffers 4 4k; o gzip_buffers 4 8k;, ma ho aumentato quel valore per assicurarmi che anche i file Javascript o CSS di grandi dimensioni possano essere compressi.

Quindi la mia configurazione finale è la seguente:

[...]
http {
    [...]
    gzip  on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    [...]
}
[...]

Ricarica nginx:

service nginx reload

3 Test

Per verificare se la tua configurazione funziona, puoi utilizzare gli Strumenti per sviluppatori in Firefox o Google Chrome e accedere a un file di testo tramite Firefox (ad esempio una pagina HTML statica). Nell'output delle intestazioni HTTP, dovresti ora vedere che il client (Firefox) ha inviato un'intestazione Accept-Encoding:gzip,deflate per dire al server che accetta contenuto compresso nei formati gzip e deflate; il server dovrebbe comprimere il file e inviarlo con un'intestazione Content-Encoding:gzip (come si vede in questo esempio, nginx imposta anche l'intestazione Vary:Accept-Encoding):

  • nginx HttpGzipModule: http://nginx.org/en/docs/http/ngx_http_gzip_module.html
  • Debian:http://www.debian.org/

Debian
  1. Come installare Proxmox VE 4 su Debian 8 (Jessie)

  2. Come distribuire un server DNS dinamico con Docker su Debian 10

  3. Come installare HTTP Git Server con Nginx su Debian 11

  4. Come installare WebDAV con Lighttpd su Debian 8 (Jessie)

  5. Come configurare un firewall con CSF su Debian 9

Come configurare un server di posta con Modoboa su Debian 10

Come installare il server FTP vsftpd con TLS su Debian 10

Come abilitare il protocollo HTTP2 con Nginx su Debian 8 Jessie Server

Come configurare LAMP con Debian 11

Come configurare Samba Server con Debian 11

Come installare Nginx con PHP-FPM su Debian 11