Nawigacja bloga

Najnowsze posty

Kopia zapasowa Windows 11 — kompletny poradnik backup i odzyskiwania
Kopia zapasowa Windows 11 — kompletny poradnik backup i odzyskiwania
9 wyświetlenia 0 Lubię
Kopia zapasowa Windows 11 — kompletny poradnik backup i odzyskiwania Backup w Windows 11 nie jest...
Czytaj więcej
Microsoft Access 2024 — bazy danych dla małych firm i urzędów
Microsoft Access 2024 — bazy danych dla małych firm i urzędów
8 wyświetlenia 0 Lubię
Microsoft Access 2024 — bazy danych dla małych firm i urzędów W wielu organizacjach porządek w...
Czytaj więcej
Microsoft Word 2024 — zaawansowane formatowanie dokumentów
Microsoft Word 2024 — zaawansowane formatowanie dokumentów
11 wyświetlenia 0 Lubię
Microsoft Word 2024 — zaawansowane formatowanie dokumentów Microsoft Word 2024 — zaawansowane...
Czytaj więcej
Home office 2026 — najlepsze oprogramowanie do pracy zdalnej
Home office 2026 — najlepsze oprogramowanie do pracy zdalnej
6 wyświetlenia 0 Lubię
Home office 2026 — najlepsze oprogramowanie do pracy zdalnej Praca zdalna w 2026 roku nie...
Czytaj więcej
Partycjonowanie dysku w Windows 11 — kompletny poradnik
Partycjonowanie dysku w Windows 11 — kompletny poradnik
8 wyświetlenia 0 Lubię
Partycjonowanie dysku w Windows 11 — kompletny poradnik Partycjonowanie dysku w Windows 11...
Czytaj więcej

Nginx - co to jest i jak działa?

98 Odsłony 0 Polubiony
 

Nginx to jeden z najpopularniejszych serwerów HTTP na świecie, obsługujący ponad 30% wszystkich aktywnych stron internetowych. Zaprojektowany od podstaw z myślą o wydajności, niskim zużyciu pamięci i obsłudze dużej liczby jednoczesnych połączeń, Nginx stał się standardem w branży — od małych blogów po gigantów takich jak Netflix, Cloudflare czy WordPress.com. W tym artykule wyjaśnimy, czym jest Nginx, jak działa, do czego służy i dlaczego zdominował rynek serwerów www.

Czym jest Nginx? Definicja i historia

Nginx (wymawiane „engine-x") to otwarto-źródłowy serwer HTTP, reverse proxy, load balancer i serwer proxy poczty. Został stworzony przez rosyjskiego programistę Igora Sysoeva w 2004 roku jako odpowiedź na problem C10K — wyzwanie polegające na obsłudze 10 000 jednoczesnych połączeń na pojedynczym serwerze.

W tamtym czasie dominujący serwer Apache HTTP Server stosował model procesowy/wątkowy, który przy dużej liczbie jednoczesnych połączeń zużywał ogromne ilości pamięci. Nginx rozwiązał ten problem dzięki asynchronicznej, zdarzeniowej architekturze, która pozwala obsługiwać tysiące połączeń na pojedynczym procesie roboczym.

W 2011 roku Sysoev założył firmę Nginx Inc., a w 2019 roku firma została przejęta przez F5 Networks za 670 milionów dolarów. Mimo komercjalizacji, Nginx pozostaje projektem open source na licencji BSD — darmowym do użytku zarówno osobistego, jak i komercyjnego.

Architektura Nginx — dlaczego jest tak szybki?

Sekret wydajności Nginx tkwi w jego unikalnej architekturze. W przeciwieństwie do tradycyjnych serwerów, które tworzą nowy proces lub wątek dla każdego połączenia, Nginx wykorzystuje model zdarzeniowy (event-driven).

Model master-worker

Nginx składa się z jednego procesu master i kilku procesów worker. Proces master odczytuje konfigurację, zarządza procesami worker i obsługuje sygnały systemowe. Procesy worker wykonują faktyczną pracę — obsługują połączenia, przetwarzają żądania HTTP i zwracają odpowiedzi.

Pętla zdarzeń (event loop)

Każdy proces worker działa w pętli zdarzeń, wykorzystując mechanizmy systemu operacyjnego takie jak epoll (Linux), kqueue (FreeBSD/macOS) czy IOCP (Windows). Dzięki temu jeden proces worker może obsługiwać tysiące jednoczesnych połączeń bez blokowania się na operacjach I/O.

Nieblokujące operacje I/O

Nginx wykorzystuje nieblokujące (non-blocking) operacje wejścia/wyjścia. Kiedy worker czeka na dane z dysku, sieci lub upstream serwera, nie stoi bezczynnie — obsługuje inne połączenia. To fundamentalna różnica w porównaniu z modelem Apache prefork, gdzie każde połączenie blokuje jeden proces.

AspektNginxApache (prefork)
Model obsługiAsynchroniczny, zdarzeniowyProcesowy / wątkowy
Pamięć na połączenie~2,5 KB~2,5 MB (cały proces)
10 000 jednoczesnych połączeń~25 MB RAM~25 GB RAM
Statyczne plikiBezpośrednia obsługa, bardzo szybkaWolniejsza, przez moduł
KonfiguracjaScentralizowany plik .conf.htaccess (per-directory)
Dynamiczna zawartośćPrzez FastCGI/proxyNatywne moduły (mod_php)

Do czego służy Nginx? Zastosowania

Nginx jest niezwykle wszechstronny i pełni wiele ról w infrastrukturze serwerowej:

Serwer HTTP (web server)

Podstawowa funkcja Nginx to serwowanie stron internetowych — zarówno statycznych plików HTML, CSS, JavaScript i obrazów, jak i dynamicznych aplikacji PHP, Python, Node.js czy Ruby za pośrednictwem FastCGI, uWSGI lub proxy.

Reverse proxy

Nginx reverse proxy to jedna z najpopularniejszych konfiguracji. Nginx stoi przed serwerami aplikacyjnymi (backend), przyjmuje żądania od klientów i przekazuje je do odpowiednich serwerów backendowych. Korzyści:

  • Terminacja SSL/TLS — szyfrowanie obsługiwane przez Nginx, backend komunikuje się nieszyfrowanym HTTP
  • Buforowanie (caching) — często żądane odpowiedzi serwowane z cache'a bez obciążania backendu
  • Kompresja — odpowiedzi kompresowane gzip/brotli przed wysłaniem do klienta
  • Bezpieczeństwo — ukrywa architekturę backendu przed klientami

Load balancer (równoważenie obciążenia)

Nginx może rozdzielać ruch między wieloma serwerami backendowymi, zapewniając wysoką dostępność i skalowalność. Obsługuje algorytmy: round-robin, least connections, IP hash i weighted. To funkcja kluczowa w środowiskach serwerowych opartych na Windows Server czy Linuxie.

Serwer proxy poczty

Mniej znana funkcja Nginx to proxy dla protokołów IMAP, POP3 i SMTP — przydatne w dużych infrastrukturach pocztowych.

API Gateway

W architekturach mikroserwisowych Nginx pełni rolę bramy API — routuje żądania do odpowiednich mikroserwisów, obsługuje rate limiting, uwierzytelnianie i transformację żądań.

Instalacja i konfiguracja Nginx — podstawy

Instalacja Nginx jest prosta na większości systemów operacyjnych. Na serwerach z systemem Windows Server Nginx jest dostępny jako natywny plik binarny, choć najczęściej jest używany na Linuxie.

Instalacja na Ubuntu/Debian

Na serwerach Linux z dystrybucją Ubuntu lub Debian wystarczy jedno polecenie: sudo apt install nginx. Po instalacji Nginx automatycznie startuje i zaczyna serwować domyślną stronę powitalną na porcie 80.

Struktura katalogów

Główne katalogi Nginx na Linuxie:

  • /etc/nginx/nginx.conf — główny plik konfiguracyjny
  • /etc/nginx/sites-available/ — definicje serwerów wirtualnych
  • /etc/nginx/sites-enabled/ — aktywne serwery (symlinki)
  • /var/log/nginx/ — logi dostępu i błędów
  • /var/www/html/ — domyślny katalog z plikami strony

Podstawowa konfiguracja — virtual host

Nginx konfiguruje się za pomocą bloków server (odpowiedników VirtualHostów w Apache). Każdy blok server definiuje domenę, port nasłuchiwania, lokalizację plików i reguły proxy. Konfiguracja jest przechowywana w plikach .conf, a nie w rozproszonych plikach .htaccess jak w Apache — co jest szybsze, ale wymaga reloadu po zmianach.

SSL/TLS z Let's Encrypt

Certyfikaty SSL można łatwo skonfigurować za pomocą narzędzia Certbot. Po uzyskaniu certyfikatu Let's Encrypt, Nginx obsługuje HTTPS z automatycznym przekierowaniem z HTTP. Współczesne konfiguracje powinny wymuszać TLS 1.2+ i preferować szyfrowanie z AEAD (AES-GCM, ChaCha20-Poly1305).

Nginx vs Apache — szczegółowe porównanie

Nginx i Apache to dwa najpopularniejsze serwery www, ale różnią się filozofią i zastosowaniem:

Wydajność i skalowalność

Nginx dominuje w scenariuszach z dużą liczbą jednoczesnych połączeń — serwowanie statycznych plików, reverse proxy, load balancing. Apache lepiej radzi sobie z dynamicznymi aplikacjami PHP dzięki natywnej integracji z mod_php, choć Nginx z PHP-FPM osiąga porównywalne lub lepsze wyniki.

Konfiguracja

Apache oferuje elastyczność konfiguracji per-directory przez pliki .htaccess — wygodne w hostingach współdzielonych, ale wolniejsze (Nginx musi sprawdzać .htaccess w każdym katalogu dla każdego żądania). Nginx wymaga centralnej konfiguracji i reloadu, co jest szybsze, ale mniej elastyczne w środowiskach współdzielonych.

Ekosystem modułów

Apache ma bogatszy ekosystem modułów dynamicznych, które można ładować i odładowywać bez rekompilacji. Moduły Nginx (przed wersją 1.9.11) wymagały kompilacji razem z serwerem. Od 2016 roku Nginx obsługuje moduły dynamiczne, ale ich dostępność jest mniejsza.

Najlepsze rozwiązanie — Nginx + Apache razem

Bardzo popularną konfiguracją jest ustawienie Nginx jako reverse proxy przed Apache. Nginx obsługuje statyczne pliki, terminację SSL, cache i load balancing, a Apache przetwarza dynamiczne żądania PHP. To połączenie łączy wydajność Nginx z elastycznością Apache.

Nginx w kontenerach i Kubernetes

Nginx jest jednym z najczęściej używanych obrazów na Docker Hub. Oficjalny obraz nginx:alpine waży zaledwie kilka megabajtów i stanowi idealne rozwiązanie dla konteneryzowanych aplikacji.

Nginx w Docker

Typowa konfiguracja Docker z Nginx obejmuje serwowanie aplikacji frontendowej (React, Vue, Angular) lub działanie jako reverse proxy dla mikroserwisów. Plik Dockerfile jest prosty — kopiujesz konfigurację i pliki statyczne do obrazu.

Nginx Ingress Controller w Kubernetes

Nginx Ingress Controller to jeden z najpopularniejszych kontrolerów ruchu w Kubernetes. Zarządza routingiem zewnętrznego ruchu HTTP/HTTPS do serwisów wewnątrz klastra. Alternatywą jest Nginx Proxy Manager — graficzny interfejs do zarządzania konfiguracją Nginx, popularny w środowiskach homelab.

W środowiskach produkcyjnych na Microsoft Azure Nginx Ingress Controller jest standardowym wyborem dla klastrów AKS (Azure Kubernetes Service).

Optymalizacja wydajności Nginx

Aby w pełni wykorzystać potencjał Nginx, warto zoptymalizować kilka kluczowych obszarów:

Worker processes i connections

Liczba procesów worker powinna odpowiadać liczbie rdzeni procesora CPU. Parametr worker_connections określa maksymalną liczbę jednoczesnych połączeń na worker. Przy 4 workerach i 1024 połączeniach każdy serwer może obsłużyć 4096 jednoczesnych połączeń.

Buforowanie (caching)

Nginx cache potrafi drastycznie zmniejszyć obciążenie serwerów backendowych. Cache proxy przechowuje odpowiedzi upstream w pamięci lub na dysku, serwując je bezpośrednio bez kontaktu z backendem. Szybki dysk SSD jest tutaj nieoceniony.

Kompresja Gzip/Brotli

Włączenie kompresji zmniejsza rozmiar przesyłanych danych nawet o 70–80%. Brotli (moduł ngx_brotli) oferuje lepszą kompresję niż Gzip przy porównywalnym obciążeniu procesora.

HTTP/2 i HTTP/3

Nginx obsługuje HTTP/2 (multipleksowanie, kompresja nagłówków) i eksperymentalnie HTTP/3 (QUIC). Włączenie HTTP/2 wymaga jedynie dodania parametru w bloku listen.

OptymalizacjaWpływ na wydajnośćTrudność wdrożenia
Worker processes = CPU coresPodstawowa, kluczowaŁatwa (1 linia)
Gzip/Brotli compression60–80% mniejszy transferŁatwa
Proxy cache10–100x mniej żądań do backenduŚrednia
HTTP/2Szybsze ładowanie stronŁatwa (1 parametr)
SSL session cacheSzybszy handshake TLSŁatwa
Open file cacheMniej operacji I/O na dyskuŁatwa

Bezpieczeństwo Nginx — hardening i best practices

Nginx oferuje wiele mechanizmów bezpieczeństwa, które powinny być skonfigurowane w każdym środowisku produkcyjnym:

Ukrycie wersji serwera

Domyślnie Nginx wysyła nagłówek Server: nginx/x.x.x, ujawniając wersję oprogramowania. Dyrektywa server_tokens off; ukrywa numer wersji, utrudniając atakującym identyfikację znanych podatności. To jeden z pierwszych kroków hardeningu.

Rate limiting

Moduł ngx_http_limit_req_module pozwala ograniczyć liczbę żądań z jednego adresu IP w określonym czasie. To skuteczna ochrona przed atakami brute-force na panele logowania i przed nadmiernym obciążeniem API. Typowa konfiguracja: 10–30 żądań na sekundę na IP.

Nagłówki bezpieczeństwa

Nginx powinien dodawać kluczowe nagłówki bezpieczeństwa do każdej odpowiedzi HTTP:

  • Strict-Transport-Security (HSTS) — wymusza HTTPS przez określony czas
  • X-Frame-Options — chroni przed clickjacking
  • X-Content-Type-Options — zapobiega MIME type sniffing
  • Content-Security-Policy — kontroluje źródła zasobów strony
  • Referrer-Policy — kontroluje informacje o referrerze

Ochrona przed DDoS

Nginx może ograniczać liczbę jednoczesnych połączeń z jednego IP (moduł limit_conn), buforować żądania do backendu i odrzucać podejrzane żądania. W połączeniu z Cloudflare lub innym CDN/WAF, Nginx stanowi skuteczną linię obrony przed atakami DDoS.

ModSecurity z Nginx

ModSecurity — popularny Web Application Firewall znany z Apache — jest dostępny również jako moduł dynamiczny dla Nginx. W połączeniu z zestawem reguł OWASP CRS chroni przed SQL injection, XSS, path traversal i innymi atakami na warstwie aplikacji.

FAQ — najczęściej zadawane pytania o Nginx

Czym jest Nginx i do czego służy?

Nginx to otwarto-źródłowy serwer HTTP, reverse proxy i load balancer. Służy do serwowania stron internetowych, przekazywania żądań do serwerów aplikacyjnych, równoważenia obciążenia i buforowania treści. Jest używany przez ponad 30% stron w internecie.

Czy Nginx jest darmowy?

Tak, Nginx Open Source jest darmowy na licencji BSD. Istnieje też komercyjna wersja NGINX Plus z dodatkowymi funkcjami (zaawansowany monitoring, active health checks, API management), ale podstawowa wersja jest w pełni funkcjonalna i bezpłatna.

Nginx vs Apache — co wybrać?

Nginx lepiej sprawdza się jako reverse proxy, load balancer i serwer statycznych plików. Apache oferuje większą elastyczność konfiguracji (pliki .htaccess) i bogatszy ekosystem modułów. W praktyce często używa się obu — Nginx przed Apache jako reverse proxy.

Jak sprawdzić wersję Nginx?

W terminalu wpisz nginx -v (wyświetli wersję) lub nginx -V (wyświetli wersję i parametry kompilacji). Na serwerach Windows Server plik nginx.exe obsługuje te same parametry.

Czym jest Nginx Proxy Manager?

Nginx Proxy Manager to graficzna nakładka na Nginx, umożliwiająca zarządzanie konfiguracją reverse proxy, certyfikatami SSL i hostami przez przeglądarkę. Popularna w środowiskach homelab i mniejszych wdrożeniach, gdzie programista nie chce edytować plików konfiguracyjnych ręcznie.

Podsumowanie

Nginx to niezastąpione narzędzie w arsenale każdego administratora i programisty. Jego asynchroniczna architektura, niskie zużycie zasobów i wszechstronność czynią go idealnym wyborem jako serwer www, reverse proxy i load balancer. W połączeniu z kontenerami Docker i orkiestratorami jak Kubernetes, Nginx stanowi fundament nowoczesnej infrastruktury webowej.

Niezależnie od tego, czy budujesz prostą stronę firmową, czy zarządzasz klastrem obsługującym miliony żądań — Nginx poradzi sobie z każdym wyzwaniem. Serwery, na których działa Nginx, wymagają odpowiedniego systemu operacyjnego — sprawdź Windows Server 2022 Standard w KluczeSoft, aby uzyskać licencję serwerową z natychmiastową dostawą klucza. Dowiedz się też więcej o budowie serwerów i wpływie procesora CPU na wydajność serwera www.

Polecane produkty

Najczesciej zadawane pytania

Co to jest Nginx?

Nginx to wydajny serwer HTTP, reverse proxy i load balancer — obsługuje ponad 30% najpopularniejszych stron internetowych.

Czym się różni Nginx od Apache?

Nginx jest szybszy przy obsłudze wielu połączeń jednocześnie. Apache jest bardziej elastyczny dzięki modułowi .htaccess.

Czy Nginx jest darmowy?

Tak, Nginx Open Source jest darmowy. Nginx Plus (wersja komercyjna) oferuje dodatkowe funkcje za opłatą.

 
Czy ten wpis na blogu był dla Ciebie pomocny?
Opublikowano w: Hardware

Dodaj komentarz

Kod zabezpieczający
z VAT
🛒 Do koszyka