Nginx vs Apache — który serwer jest najszybszy?
2 min
2 min
Na skróty
Prawie połowa stron internetowych korzysta z serwera Apache lub Nginx. Oba spełniają tę samą funkcję — umożliwiają hostowanie witryn na serwerze hostingodawcy i obsługują wysyłane przez użytkowników przeglądarki zapytania. Korzystają jednak z nieco odmiennych rozwiązań. A zatem, który z nich spisuje się lepiej — Nginx vs Apache?
Apache to jeden z najstarszych serwerów WWW — zaprojektowany jeszcze w 1995 roku przez amerykańskiego programistę, Roberta McCoola.
Dzięki modułowej budowie, która daje administratorom pełną dowolność w doborze bibliotek i funkcji; kompatybilności z praktycznie wszystkimi systemami operacyjnymi oraz możliwości przetwarzania wielu języków programowania (nie tylko „klasycznego”, serwerowego PHP) — zdobył ogromną popularność. Już w 1996 roku zdetronizował serwer NCSA HTTPd (przy którym McCool również pracował) — i na pierwszym miejscu wśród serwerów WWW pozostał aż do 2016 roku.
W tym też roku po raz pierwszy (wg danych Netcraft) pozycję lidera zdobył serwer Nginx.
Zainicjowany w 2002 roku przez Igora Sysoeva projekt miał jedno zadanie — pokonać barierę dziesięciu tysięcy obsługiwanych połączeń z klientem jednocześnie… co zresztą udało się osiągnąć, dzięki zastosowaniu architektury zdarzeniowej.
Ngnix wyróżnia się na tle innych serwerów wysoką efektywnością zasobów, świetną skalowalnością przy dużych obciążeniach i stosunkowo niskimi wymaganiami sprzętowymi. I dlatego też obecnie obsługuje on ponad ⅓ wszystkich stron internetowych.
Najważniejsza różnica pomiędzy serwerami Apache i Nginx leży w ich architekturze. Obsługa zapytań w przypadku tego drugiego oparta jest — jak już powiedzieliśmy — na zdarzeniach, co umożliwia równoległą realizację wielu zapytań. Takie zdarzeniowe podejście do architektury serwera (event-based architecture) pozwala utrzymać stabilność całego procesu nawet przy dużych ilościach zapytań przychodzących jednocześnie.
Serwery Apache — wręcz przeciwnie. Dla każdego zapytania muszą stworzyć oddzielny wątek (proces), co przekłada się na większe zużycie zasobów. Przy kilku zapytaniach do obsłużenia, nie jest to problemem, ale w środowisku o dużym obciążeniu — możemy mieć problemy ze skalowaniem i wydajnością serwera.
Z drugiej strony — dużą zaletą Apache jest jego rozszerzalność (i elastyczność). Już sam w sobie może się pochwalić wieloma wbudowanymi modułami — które można dodatkowo rozbudować przy użyciu m.in. zewnętrznych bibliotek. Umożliwia przy tym też szczegółową konfigurację każdej z funkcji w plikach .htaccess i httpd.conf.
W porównaniu do niego Nginx jest o wiele, wiele lżejszy. Operuje na mniejszej ilości modułów, a do konfiguracji wykorzystuje… zwykłe pliki tekstowe — co tylko upraszcza cały proces.
Kolejna kwestia to podejście do przetwarzania zawartości statycznej i dynamicznej. Apache obsłuży obie — natywnie, na poziomie serwera — Nginx poradzi sobie sam tylko z plikami statycznymi (ale znacznie szybciej niż jego starszy rywal). Pliki dynamiczne musi więc przekazać zewnętrznemu procesorowi — a to wymaga konfiguracji dodatkowego oprogramowania i połączeń między nim a serwerem (który w tej strukturze pełni rolę proxy).
Odpowiedź jest prosta — Nginx.
Ma on nad Apache’em zdecydowaną przewagę przede wszystkim przy przetwarzaniu plików statycznych. W benchmarkach Nginx okazuje się być ok. 2-2,5x szybszy — różnica jest tym bardziej istotna, im większą liczbę połączeń muszą obsłużyć porównywane serwery. Jeśli chodzi o pliki dynamiczne — tu wiele zależy od prawidłowej konfiguracji Nginx’a. Przy optymalnym połączeniu z procesorem odpowiadającym za przetwarzanie dynamiczne, osiąga podobne wyniki co Apache.
A przekładając to na praktykę — czas przetwarzania plików (zwłaszcza statycznych, do których zalicza się np. kod strony) ma bezpośredni wpływ na to, jak długo zajmie wczytanie się witryny w wyszukiwarce. Jeśli więc zależy Ci na jak najlepszych osiągach swojej strony (i wysokiej pozycji w wynikach wyszukiwania), Nginx powinien być nieco lepszym wyborem.
Zawodowy copywriter oraz student psychologii na Uniwersytecie Warszawskim. W świecie marketingu internetowego równie mocno, co chwytliwe (i wartościowe) treści interesuje go dobry design. Gdy nie zajmuje się tworzeniem contentu, odkrywa perełki kina niezależnego i pracuje nad własnymi opowiadaniami.