NGINX vs Apache: Porównanie popularnych serwerów internetowych

Internet, jaki znamy dzisiaj, rozpoczął swój podbój na początku lat dziewięćdziesiątych. 20 września 1990 roku w ośrodku badań jądrowych CERN w Genewie ruszyła pierwsza na świecie strona internetowa i jednocześnie zwiastowała narodziny World Wide Web. …

NGINX vs Apache: Porównanie popularnych serwerów internetowych

  1. Magazyn
  2. »
  3. Artykuł
  4. »
  5. Internet
  6. »
  7. NGINX vs Apache: Porównanie popularnych serwerów internetowych

Internet, jaki znamy dzisiaj, rozpoczął swój podbój na początku lat dziewięćdziesiątych. 20 września 1990 roku w ośrodku badań jądrowych CERN w Genewie ruszyła pierwsza na świecie strona internetowa i jednocześnie zwiastowała narodziny World Wide Web. W zasadzie strony internetowe to nic innego jak dokumenty HTML. Aby udostępnić odwiedzającym kilka różnych stron internetowych, gospodarz potrzebuje oprogramowania serwerowego. Przetwarza ono żądania i analizuje je, aby następnie zwrócić przeglądarce żądane dokumenty. Dwa najpopularniejsze programy tego typu to NGINX i Apache. W tym porównaniu przedstawiamy szczegółowo oba serwery internetowe i ich cechy oraz pokazujemy, który z nich lepiej nadaje się do jakich celów.

Jaka jest różnica między serwerem WWW a serwerem aplikacji?

Zadaniem serwera WWW jest nawiązanie połączenia pomiędzy serwerem fizycznym lub chmurowym a zapisanymi stronami internetowymi (lub przeglądarkami) internautów. Z kolei serwer aplikacji odpowiada za udostępnianie aplikacji w sieci.

Czy zarówno NGINX, jak i serwer WWW Apache nadają się do obsługi dynamicznych żądań?

Nie, w przeciwieństwie do serwera WWW Apache, NGINX obsługuje tylko dostarczanie statycznych treści. Natomiast treści dynamiczne są przekazywane do innego oprogramowania.

Czy oba serwery internetowe mogą być również używane w połączeniu?

Tak, działa to bardzo dobrze. W praktyce najczęściej można spotkać kombinację NGINX jako reverse proxy i jednego lub kilku serwerów Apache w backendzie.

1. apache: popularny flexibilista

Otwarty serwer WWW Apache jest obecny na rynku od 1995 roku i według portalu w3techs.com jest najczęściej używanym serwerem WWW ze wszystkich. Ze względu na długą historię, obszerną dokumentację i elastyczne opcje wdrażania, serwer WWW jest bardzo popularny wśród administratorów. Jednak ogromny udział w rynku wynika przede wszystkim z faktu, że wiele systemów (np. CMS) współpracuje z Apache’em po wyjęciu z pudełka. Ponadto jest on preinstalowany na wszystkich ważnych dystrybucjach Linuksa, takich jak Red Hat, CentOS czy Ubuntu.

Dobrze wiedzieć: Od 1999 roku za dalszy rozwój serwera WWW odpowiada Apache Software Foundation.

Serwer WWW Apache jest konfigurowany za pomocą pliku .htaccess. Pozwala to na dużą elastyczność w przetwarzaniu przychodzących żądań. Można na przykład zdefiniować limity pamięci i ograniczenia w przesyłaniu plików, ustawić reguły przekierowania lub ochronę katalogów (htpasswd) albo dokonać różnych ustawień bezpieczeństwa w zakresie obsługi plików cookie.

Jedną z największych zalet Apache jest jednak z pewnością to, że można każdemu poziomowi lub katalogowi w drzewie przypisać własny plik .htaccess z indywidualną konfiguracją. Dzięki temu dostawcy hostingu współdzielonego mogą na przykład zaoferować swoim klientom opcję konfiguracji ich strony na jednej i tej samej maszynie bez wpływu na pozostałych użytkowników. Jeśli użytkownik dokona ustawień dla swojego środowiska dedykowanego, globalna konfiguracja serwera pozostaje bez zmian.

1.1 Moduły rozszerzają funkcjonalność serwera WWW

Dzięki systemowi dynamicznych modułów (który w tej formie istnieje również w NGINX) można dodatkowo rozszerzyć funkcjonalność Apache. Moduły można instalować nawet po skonfigurowaniu i rozpoczęciu korzystania z serwera WWW Apache, a także aktywować lub dezaktywować je w zależności od potrzeb. Oficjalną listę wszystkich modułów wchodzących w skład standardowej dystrybucji Apache można znaleźć tutaj.

Wskazówka: W dystrybucjach Linuksa opartych na Debianie moduły mogą być aktywowane lub dezaktywowane bez edycji plików konfiguracyjnych za pomocą poleceń a2enmod i a2dismod .

1.2 NGINX vs Apache: Cierpienie z powodu wydajności

Performance Benchmark NGINX vs Apache
Serwer WWW Apache był z czasem stale ulepszany i optymalizowany pod względem wydajności. Jednak nigdzie nie dorównuje on wydajnością NGINX
.

Główną słabością Apache jest jego wydajność. O ile w przypadku mniejszych stron internetowych serwer wciąż działa niezawodnie i stabilnie, o tyle przy rosnącej liczbie jednoczesnych żądań regularnie słabnie. Wynika to głównie z faktu, że dla każdego otwartego połączenia z serwerem WWW uruchamiany jest osobny proces, który zajmuje pamięć roboczą. Oznacza to, że setki lub tysiące równoległych żądań powodują logicznie tyle samo procesów. Te drastycznie wydłużają czas ładowania stron, a w najgorszym przypadku mogą nawet doprowadzić do całkowitego zatrzymania pracy serwera WWW.

Serwer WWW Apache był z biegiem czasu stale ulepszany i optymalizowany pod względem wydajności. Nie może on jednak nadążyć za NGINX „out-of-the-box“.

2 NGINX: Wydajny, lekki

NGINX został wydany dopiero w 2004 roku i od początku był rozwijany z naciskiem na wydajność, podstawowe funkcje serwera i proxy. Serwer internetowy oferuje zdecydowane korzyści w stosunku do Apache, zwłaszcza na ograniczonych systemach, ponieważ opiera się na asynchronicznej, opartej na zdarzeniach architekturze. Oznacza to, że dla każdego połączenia nie jest uruchamiany osobny proces, ale na jeden proces może być obsługiwanych nawet kilka tysięcy połączeń. W ten sposób NGINX jest w stanie obsłużyć dużą liczbę jednoczesnych żądań bez utraty prędkości i stabilności. Zużycie zasobów pozostaje względnie stałe nawet podczas szczytów obciążenia, co oznacza, że strony wymagające dużej wydajności z dużą liczbą dostępów mogą być dostarczane nawet przy ograniczonym sprzęcie (np. na Raspberry Pi).

2.1 Zawartość dynamiczna nie jest obsługiwana

NGINX może być również rozszerzany przez moduły. Muszą one jednak zostać skompilowane w systemie, ponieważ dynamiczne ładowanie nie jest możliwe tak jak w przypadku Apache. Ponadto, w przeciwieństwie do Apache, NGINX wspiera tylko dostarczanie statycznych treści, takich jak obrazy, arkusze stylów CSS lub JavaScript, a także nie oferuje możliwości integracji odpowiednich interpreterów poprzez moduły. W przypadku treści dynamicznych (np. skryptów PHP, Pythona lub Perla) żądania są przekazywane do innego oprogramowania (czyli w przypadku PHP do odpowiedniego interpretera).

Ponadto nie są obsługiwane żadne dostosowania konfiguracji na poziomie katalogów (poprzez .htaccess), co sprawia, że konfiguracja serwera WWW NGINX jest generalnie nieco bardziej skomplikowana niż w przypadku Apache. Ma to jednak znaczenie tylko wtedy, gdy chcesz szczegółowo zajmować się administracją serwera. Dostawcy usług hostingowych, którzy mają w swojej ofercie NGINX, mają zazwyczaj odpowiednie moduły do typowych zadań.

3 NGINX i Apache jako sieć

Wordpress unter Windows durch Lupe betrachtet
Szczególnie w środowisku WordPress, połączenie reverse proxy NGINX i jednego lub więcej serwerów backendowych Apache jest również bardzo powszechne.

Aby skorzystać z zalet obu światów, można również użyć NGINX i Apache w połączeniu. Na przykład, podczas gdy NGINX szczególnie dobrze sprawdza się jako reverse proxy, Apache jest przede wszystkim używany jako serwer backendowy ze względu na obsługę dynamicznych treści.

W praktyce serwer NGINX jest podłączony przed jednym lub (jako load balancer) kilkoma serwerami Apache. Połączenia przychodzące trafiają więc najpierw do NGINX-a, który zajmuje się dostarczaniem statycznych treści. Z kolei w przypadku treści dynamicznych żądanie jest przekazywane do serwera Apache, który w tym kontekście może również oprzeć się na swoim pliku .htaccess.

Podsumowanie: Apache czy NGINX?

Nie ma ogólnej odpowiedzi na pytanie, który serwer WWW jest lepszy. Ponieważ podczas gdy NGINX wyprzedza Apache o wiele mil pod względem wydajności, ten ostatni ma przewagę, jeśli chodzi o obsługę dynamicznych treści. Ostatecznie decyzja zawsze zależy od indywidualnych wymagań Twojego projektu internetowego. W praktyce wielu użytkowników polega również na sieci, aby skorzystać z mocnych stron obu serwerów internetowych.

Dobrze wiedzieć: Społeczność internetowa „Stack Overflow“ to dobre miejsce dla programistów i administratorów. Ponieważ tam znajdziesz nie tylko odpowiedzi na większość pytań na temat serwerów internetowych, ale także liczne instrukcje, tutoriale i noty pomocnicze dotyczące konfiguracji i korzystania z Apache, NGINX i ich alternatyw. Należą do nich na przykład darmowy serwer internetowy Lighttpd lub open source HTTP / 2-capable Caddy.

Zalety i wady dwóch serwerów internetowych są również podsumowane w poniższym filmie:

Artykuły powiązane