GNU/Linux >> Znalost Linux >  >> Debian

Jak ušetřit provoz s nginxs HttpGzipModule na Debianu Jessie

V tomto tutoriálu popíšu, jak nakonfigurovat HttpGzipModule na webovém serveru nginx (na Debian Jessie). HttpGzipModule umožňuje nginx komprimovat soubory a doručovat je klientům (např. prohlížečům), kteří zvládnou komprimovaný obsah, což většina moderních prohlížečů dělá. S HttpGzipModule můžete komprimovat soubory HTML, CSS, Javascript, text nebo XML na cca. 20 – 30 % jejich původní velikosti, čímž vám ušetří provoz na serveru a učiní uživatele vašeho modemu šťastnějšími.

Komprese souborů způsobuje mírně vyšší zatížení serveru, ale podle mých zkušeností je to kompenzováno tím, že se výrazně zkracují doby připojení klientů k vašemu serveru. Například uživatel modemu, který potřeboval sedm sekund ke stažení nekomprimovaného souboru HTML, může nyní potřebovat pouze dvě sekundy na stejný, ale komprimovaný soubor.

Použitím HttpGzipModule se nemusíte bát, že vyloučíte uživatele se staršími prohlížeči, které si s komprimovaným obsahem neporadí. Prohlížeč vyjednává se serverem před přenosem jakéhokoli souboru, a pokud prohlížeč nemá schopnost zpracovat komprimovaný obsah, server doručí soubory nekomprimované.

1 předběžná poznámka

Předpokládám, že máte na svém serveru Debian funkční nastavení nginx, např. jak je uvedeno v tomto tutoriálu: Instalace Nginx s PHP (jako PHP-FPM) a MariaDB (LEMP) na Debian 8

2 Konfigurace HttpGzipModule

Otevřete /etc/nginx/nginx.conf:

nano /etc/nginx/nginx.conf

Zjistíte, že komprese gzip je již povolena (v části http {}):

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

gzip on;
gzip_disable "msie6";

[...] } [...]

gzip zapnutý; umožňuje kompresi gzip.

gzip_disable "MSIE [1-6]\.(?!.*SV1)"; zakáže kompresi gzip pro prohlížeče, které ji nepodporují (v tomto případě MS Internet Explorer starší verze 6 SV1).

Tuto konfiguraci samozřejmě můžeme doladit (seznam možných konfiguračních direktiv najdete na http://nginx.org/en/docs/http/ngx_http_gzip_module.html):

gzip_http_verze 1.1; - To umožňuje kompresi gzip pro požadavek HTTP verze 1.1. Vzhledem k tomu, že záhlaví Content-Length není nastaveno, znemožní to Keepalives ve verzi 1.0.

gzip_vary on; - Toto nastaví hlavičku odpovědi Vary:Accept-Encoding. Některé servery proxy mají chybu v tom, že poskytují komprimovaný obsah prohlížečům, které jej nepodporují. Nastavením hlavičky Vary:Accept-Encoding dáváte proxy serverům pokyn, aby ukládaly komprimovanou i nekomprimovanou verzi obsahu.

gzip_comp_level 6; - Toto je úroveň komprese (mezi 1 a 9), kde 1 je nejnižší komprese (nejrychlejší) a 9 je nejvyšší (nejpomalejší).

gzip_proxed any; - Toto konfiguruje, jak mají být zpracovávány požadavky přicházející z proxy. jakékoli prostředky umožňují kompresi pro všechny požadavky.

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; - To říká nginx, jaké typy souborů má komprimovat (text/html je vždy komprimován). Protože soubory Javascript mohou mít na každém serveru různé typy souborů, zahrnul jsem několik možných typů MIME Javascriptu (totéž platí pro XML).

gzip_buffers 16 8k; - Tím se přiřadí počet a velikost kompresních vyrovnávacích pamětí. Výchozí hodnota je gzip_buffers 4 4k; nebo gzip_buffers 4 8k;, ale tuto hodnotu jsem zvýšil, abych se ujistil, že lze komprimovat i velké soubory Javascript nebo CSS.

Moje konečná konfigurace tedy vypadá následovně:

[...]
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)";
    [...]
}
[...]

Znovu načíst nginx:

service nginx reload

3 Testování

Chcete-li otestovat, zda vaše konfigurace funguje, můžete použít nástroje pro vývojáře ve Firefoxu nebo Google Chrome a přistupovat k textovému souboru prostřednictvím Firefoxu (např. statická stránka HTML). Ve výstupu hlaviček HTTP byste nyní měli vidět, že klient (Firefox) odeslal hlavičku Accept-Encoding:gzip,deflate, aby serveru sdělil, že přijímá komprimovaný obsah ve formátech gzip a deflate; server by měl soubor zkomprimovat a odeslat s hlavičkou Content-Encoding:gzip (jak vidíte v tomto příkladu, nginx také nastaví hlavičku Vary:Accept-Encoding):

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

Debian
  1. Jak nainstalovat Proxmox VE 4 na Debian 8 (Jessie)

  2. Jak nasadit dynamický DNS server s Dockerem na Debianu 10

  3. Jak nainstalovat HTTP Git Server s Nginx na Debian 11

  1. Jak nastavit FTP server s VSFTPD na Debianu 9

  2. Jak nainstalovat WebDAV s Lighttpd na Debian 8 (Jessie)

  3. Jak nakonfigurovat bránu firewall s CSF na Debianu 9

  1. Jak nainstalovat Debian 8 (Jessie) Minimal Server

  2. Jak nainstalovat Rundeck na server Debian 8 (Jessie).

  3. Jak nainstalovat Gitlab na Debian 8 (Jessie)