Nodea — logo

Nginx

Nginx (wymawiane „engine-x”) to otwartoźródłowy serwer WWW, który pełni również funkcje reverse proxy, load balancera oraz cache treści statycznych. Powstał w 2004 roku jako odpowiedź na tzw. problem C10k — obsługę dziesięciu tysięcy równoczesnych połączeń — i szybko stał się jednym z najczęściej używanych serwerów w internecie, szczególnie w serwisach o dużym ruchu.

Jak działa Nginx?

Sercem Nginx jest architektura zdarzeniowa (event-driven, asynchroniczna). Zamiast tworzyć osobny proces lub wątek dla każdego połączenia — jak robi to klasyczny Apache w trybie prefork — Nginx uruchamia niewielką, stałą liczbę procesów roboczych, z których każdy nieblokująco obsługuje wiele połączeń jednocześnie w jednej pętli zdarzeń. Efektem jest bardzo niskie i przewidywalne zużycie pamięci nawet przy tysiącach jednoczesnych żądań.

Nginx świetnie serwuje pliki statyczne (obrazy, CSS, JavaScript) bezpośrednio, natomiast żądania dynamiczne przekazuje do backendu. W przypadku PHP oznacza to przekazanie ich przez FastCGI do PHP-FPM. Cała konfiguracja trzymana jest centralnie w plikach serwera — Nginx nie obsługuje odpowiednika plików .htaccess, co upraszcza działanie kosztem elastyczności per katalog.

Zastosowanie w praktyce

Najczęstsze role Nginx to serwer WWW dla aplikacji o dużym ruchu oraz reverse proxy stojące przed innymi usługami. Jako proxy terminuje połączenia HTTPS, buforuje odpowiedzi i rozkłada ruch między wiele serwerów aplikacyjnych, pełniąc funkcję load balancera. Popularny jest układ, w którym Nginx przyjmuje ruch i serwuje statykę, a żądania dynamiczne kieruje do Apache pracującego w tle.

Na serwerach VPS i dedykowanych Nginx to domyślny wybór dla stacków opartych na PHP-FPM, Node.js czy Pythonie, a także brama wejściowa w architekturach mikroserwisowych i kontenerowych. Jego lekkość i wydajność sprawiają, że dobrze sprawdza się zarówno na małych instancjach, jak i w rozbudowanych, skalowanych środowiskach produkcyjnych.

Powiązane pojęcia

Najczęstsze pytania

Czym różni się Nginx od Apache?

Nginx działa w modelu asynchronicznym opartym na pętli zdarzeń, dzięki czemu wydajnie obsługuje tysiące równoczesnych połączeń przy niskim zużyciu pamięci. Apache klasycznie przydziela proces lub wątek na połączenie i pozwala na konfigurację per katalog plikami .htaccess. W praktyce oba serwery często pracują razem — Nginx jako front, Apache w tle.