Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator Nginx gzip

Kompresuj odpowiedzi i oszczędzaj transfer

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
Ustaw parametry i wygeneruj blok gzip dla Nginx.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator bloku gzip dla Nginx

Kompresja gzip zmniejsza rozmiar odpowiedzi tekstowych, co przyspiesza stronę i oszczędza transfer. Konfiguracja sprowadza się do kilku dyrektyw.

Najważniejsze dyrektywy

DyrektywaZnaczenie
gzip onwłącza kompresję
gzip_comp_levelpoziom 1–9 (5–6 to dobry kompromis)
gzip_min_lengthminimalny rozmiar odpowiedzi
gzip_typestypy MIME do kompresji
gzip_varynagłówek Vary dla proxy i CDN

Przykład

Blok z poziomem 6 i typami text/plain, text/css, application/javascript oraz JSON zmniejsza rozmiar CSS i JS nawet o 80%.

gzip_static

Jeśli masz wcześniej przygotowane pliki .gz, dyrektywa gzip_static on serwuje je bez kompresji w locie — oszczędza CPU przy dużym ruchu.

Jak Nginx decyduje, co skompresować

Kompresja nie działa globalnie na wszystko, co wychodzi z serwera. Przy każdym żądaniu Nginx sprawdza najpierw, czy klient w ogóle ją obsługuje, czyli czy w nagłówku Accept-Encoding zadeklarował gzip. Dopiero potem porównuje typ MIME odpowiedzi z listą w gzip_types, rozmiar treści z progiem gzip_min_length oraz warunki dodatkowe, takie jak obsługa żądań przez proxy. Jeśli którykolwiek warunek nie jest spełniony, odpowiedź leci do klienta bez zmian. Gdy wszystkie przejdą, treść trafia do kompresora zlib.

Sama kompresja to wariant deflate — algorytm szuka w buforze powtórzonych fragmentów i zastępuje je krótkimi wskazaniami, a wynik dodatkowo koduje Huffmanem. Krótsze znaczniki dostają najczęściej występujące bajty, dzięki czemu tekst kurczy się najmocniej. Poziom od 1 do 9 reguluje, jak długo algorytm szuka lepszych dopasowań: niski poziom robi mniej prób i odpowiada szybciej, wysoki znajduje więcej powtórzeń, ale zużywa więcej procesora. Do skompresowanej odpowiedzi Nginx dokłada nagłówek Content-Encoding: gzip oraz Vary: Accept-Encoding.

Warto odróżnić dwie ścieżki. Kompresja w locie dzieje się przy każdym żądaniu i obciąża CPU serwera. gzip_static sięga po gotowy plik z rozszerzeniem .gz leżący obok oryginału i nie kompresuje niczego w trakcie odpowiedzi. Sam generator niczego nie kompresuje ani nie łączy się z Twoim serwerem — wypisuje blok dyrektyw, który wklejasz do konfiguracji, sprawdzasz przez nginx -t i wczytujesz przez reload.

Przykład: kompresja bundle.js krok po kroku

  1. Punkt wyjścia: plik bundle.js w katalogu statycznym ma 300 KB i jest serwowany bez kompresji.
  2. W bloku server ustawiasz gzip on oraz gzip_comp_level 6, a do gzip_types dopisujesz application/javascript.
  3. Ustawiasz gzip_min_length tak, aby plik 300 KB bez problemu przekraczał próg — inaczej Nginx pominie kompresję mimo włączonej dyrektywy.
  4. Nginx kompresuje odpowiedź. Przy redukcji tekstu rzędu 80%, jaką podaje się dla CSS i JS, plik spada z 300 KB do około 60 KB.
  5. Pojedyncze pobranie oszczędza więc około 240 KB (300 odjąć 60). Przy 10 000 pobrań dziennie daje to około 2,4 GB mniej transferu.
  6. Weryfikacja: curl -I -H "Accept-Encoding: gzip" https://twoja-domena/static/bundle.js powinien zwrócić nagłówki Content-Encoding: gzip oraz Vary: Accept-Encoding.

Które typy MIME warto kompresować

Typ zawartościKompresja gzipUzasadnienie
text/htmltakczysty tekst z powtarzalnymi znacznikami, duży zysk
text/csstakarkusz stylów to tekst, często powtarzalne selektory
application/javascripttakbundlery JS zyskują najbardziej z całej listy
application/json, application/xmltakodpowiedzi API są tekstowe i mocno powtarzalne
image/svg+xmltakto XML podany jako grafika, więc kompresuje się jak tekst
image/jpeg, image/png, image/webpnieformaty już skompresowane, ponowny przebieg nic nie da
video/mp4, video/webmniejak wyżej, a obciążenie procesora realne
application/zip, application/gzip, font/woff2niekontenery i formaty z własną kompresją w środku

Praktyczne wskazówki

  • Nie przepisuj listy typów bezmyślnie — wpisuj tylko te typy MIME, które faktycznie serwujesz. Wpisy dla formatów, których nie używasz, nie dają nic poza dłuższą konfiguracją.
  • Dobierz próg gzip_min_length do treści — dla bardzo małych odpowiedzi narzut na kompresję bywa większy niż zaoszczędzone bajty. Ustaw próg tak, aby obejmował realne pliki tekstowe, a pomijał drobne odpowiedzi.
  • Włącz gzip_vary, gdy masz proxy lub CDN — bez nagłówka Vary cache może zapisać jedną wersję odpowiedzi i podać ją klientowi, który gzipa nie obsługuje.
  • Sprawdź, czy nie kompresujesz podwójnie — jeśli warstwa przed Nginx już kompresuje, kolejny przebieg tylko marnuje CPU i może psuć nagłówki.
  • Testuj po każdej zmianie poziomu — przeładuj konfigurację i porównaj czas odpowiedzi oraz obciążenie procesora na realnym ruchu, nie na jednym żądaniu z konsoli.

Czego narzędzie nie uwzględnia

  • Twojego ruchu i zapasu CPU — nie wie, jaki masz serwer ani ile wolnych rdzeni. Wybór poziomu kompresji zostaje po Twojej stronie.
  • Wcześniejszych warstw w łańcuchu — nie sprawdzi, czy CDN albo reverse proxy przed Nginx już kompresuje odpowiedzi, więc nie ostrzeże przed podwójną kompresją.
  • Zawartości katalogu z plikami — nie zgadnie, czy masz przygotowane pliki .gz ani czy są aktualne względem oryginałów, więc decyzja o gzip_static należy do Ciebie.
  • Wsparcia klientów i alternatyw — nie wie, jakich przeglądarek oczekujesz ani czy używasz Brotli, więc nie oceni, czy gzip to nadal najlepszy wybór.

Najczęstsze pytania

Czy kompresować obrazy i wideo?

Nie — formaty te są już skompresowane. Ponowna kompresja nie zmniejszy pliku, a obciąży procesor.

Jaki poziom wybrać?

Poziom 5–6 daje niemal maksymalną oszczędność przy rozsądnym zużyciu CPU. Poziom 9 bywa kilkukrotnie wolniejszy przy minimalnym zysku.

Dlaczego warto włączyć gzip_vary?

Nagłówek Vary: Accept-Encoding informuje proxy i CDN, że odpowiedź zależy od obsługi kompresji przez klienta. Zapobiega błędnemu serwowaniu.

Jak sprawdzić, czy Nginx faktycznie kompresuje odpowiedzi?

Najprościej przez curl z nagłówkiem Accept-Encoding: gzip i sprawdzenie, czy w odpowiedzi pojawia się Content-Encoding: gzip. Możesz też porównać rozmiar przesłanych danych w narzędziach deweloperskich przeglądarki przed zmianą i po niej.

Czy gzip_types zastępuje domyślną listę typów?

Tak, dyrektywa nadpisuje ustawienie z szerszego kontekstu, dlatego trzeba w niej wypisać wszystkie typy, które mają być kompresowane. Typ pominięty na liście nie zostanie skompresowany.

Czy gzip działa dla HTTPS i HTTP/2?

Tak, kompresja treści jest niezależna od warstwy transportu i działa zarówno przy HTTPS, jak i przy HTTP/2. W HTTP/2 osobno kompresowane są nagłówki, ale treść odpowiedzi nadal może być podana jako gzip.

Dlaczego plik JavaScript nie jest kompresowany, mimo wpisu w gzip_types?

Najczęściej winny jest typ MIME zwracany przez serwer — jeśli dla pliku .js wychodzi inny typ niż wpisany w gzip_types, warunek nie zostanie spełniony. Inną przyczyną bywa próg gzip_min_length przy małym pliku albo brak gzip on w danym kontekście.

Czym różni się gzip w Nginx od Brotli?

Brotli przy podobnym poziomie daje zwykle mniejszy plik, ale wymaga dodatkowego modułu i wsparcia po stronie klienta. Gzip obsługuje praktycznie każdy klient, więc pozostaje bezpiecznym ustawieniem domyślnym.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!