Ce face gzip
Comprimarea gzip reduce de obicei cu 60–80% dimensiunea fișierelor text (HTML, CSS, JavaScript, JSON, XML, SVG) transmise prin rețea. Deși în /etc/nginx/nginx.conf pe Debian/Ubuntu găsești deja gzip on;, în mod implicit Nginx comprimă doar text/html — restul liniilor (gzip_types, gzip_comp_level) sunt comentate și trebuie decomentate.
Nivelul de comprimare gzip_comp_level merge de la 1 (cel mai rapid) la 9 (cea mai mică dimensiune, dar cu consum mare de procesor). În practică, 5 sau 6 oferă aproape toată reducerea de dimensiune, fără a încărca inutil CPU-ul.
Nu adăuga niciodată în gzip_types formate care sunt deja comprimate (imagini JPEG/PNG/WebP, arhive ZIP, PDF, video MP4, fonturi WOFF2): nu se mai micșorează, ci doar consumă timp de procesor.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
Context: http, server, location |
Se configurează o singură dată în blocul http din /etc/nginx/nginx.conf. |
gzip on | off |
Activează sau dezactivează comprimarea răspunsurilor. |
gzip_types |
Lista tipurilor MIME comprimate în plus față de text/html (care este mereu inclus). |
gzip_comp_level 1..9 |
Nivelul de comprimare (implicit 1; recomandat 5 sau 6). |
gzip_min_length N |
Nu comprimă răspunsurile mai mici de N octeți (implicit 20; recomandat 256 sau 1024). |
gzip_vary on |
Adaugă antetul Vary: Accept-Encoding pentru ca proxy-urile și CDN-urile să nu amestece variantele comprimate cu cele necomprimate. |
gzip_proxied any |
Comprimă și răspunsurile venite de la un backend prin proxy_pass. |
Exemple
Exemplul 1: Configurație gzip completă în blocul http
Poți pune aceste directive în /etc/nginx/nginx.conf sau în /etc/nginx/conf.d/gzip.conf:
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types
text/plain
text/css
text/javascript
application/javascript
application/json
application/xml
application/rss+xml
image/svg+xml;
Exemplul 2: Verificarea comprimării cu curl
Trimitem Accept-Encoding: gzip și căutăm Content-Encoding: gzip în răspuns:
curl -I -H "Accept-Encoding: gzip" https://example.com/assets/app.css
Rezultat
HTTP/2 200
server: nginx
content-type: text/css
content-encoding: gzip
vary: Accept-Encoding
Greșeli frecvente
- A crede că
gzip on;singur comprimă și CSS/JS/JSON: fărăgzip_types, doartext/htmleste comprimat. - Scrierea
text/htmlîngzip_types: este deja inclus automat, iar Nginx afișează avertismentul[warn] duplicate MIME type "text/html".
Comenzi înrudite
expires: Setează antetele Cache-Control și Expires pentru ca browserul și CDN-ul să păstreze în cache fișierele statice.nginx.conf și sites-available: Cum sunt organizate fișierele de configurare: nginx.conf, include, conf.d, sites-available și sites-enabled.add_header: Adaugă antete HTTP în răspunsul trimis clientului (antete de securitate HSTS, CSP, X-Frame-Options sau CORS).