Nginx vs Apache: który jest najlepszy serwer WWW?

Opublikowany: 2021-12-30

Chociaż istnieje wiele różnych typów oprogramowania serwerowego, często zmniejszasz rywali do Nginx vs Apache. Dzieje się tak, ponieważ obie oferują najwyższą wydajność dla wielu różnych konfiguracji serwerów i lepiej pasują do niektórych aplikacji niż inne.

Mimo to nadal będziesz chciał zastanowić się, który z nich jest bardziej odpowiedni dla Twoich potrzeb. Istnieje kilka różnych kategorii, którymi należy się przyjrzeć, takich jak obsługa systemu operacyjnego (OS), bezpieczeństwo, dokumentacja i (oczywiście) wydajność.

W tym poście porównamy Nginx i Apache w wielu różnych obszarach. Na koniec podsumujemy nasze ustalenia i udzielimy informacji potrzebnych do wybrania właściwej opcji.

Przedstawiamy Nginx i Apache

Zanim przejdziemy do szczegółowych szczegółów każdego typu serwera, omówimy zarówno Nginx, jak i Apache. Gdy przejdziemy do następnej sekcji, dowiesz się o niektórych przypadkach użycia obu i gdzie możesz je zobaczyć „na wolności”.

#Nginx vs #Apache: Który serwer sieciowy jest dla Ciebie odpowiedni?
Kliknij, aby tweetować

Nginx

Logo Nginx.

W porównaniu do Apache, Nginx ( wymawiane „silnik X” ) jest stosunkowo nowicjuszem w świecie technologii po stronie serwera. Jednak zespół programistów podjął się zadania rozwinięcia ograniczeń systemów Apache.

Jest to rozwiązanie typu open source, które wielu użytkowników rozważa ze względu na jego stabilność i skalowalność. Wynika to (częściowo) z architektury opartej na zdarzeniach – o czym więcej później. W rzeczywistości, jednym z celów pierwszego wydania Nginx była możliwość jednoczesnej obsługi 10 000 połączeń. Jest to coś, co było konieczne w 2004 roku ze względu na szybko rozwijającą się sieć w tamtym czasie.

Ogólnie rzecz biorąc, administratorzy i właściciele witryn lubią Nginx, ponieważ jest wydajny, działa świetnie z plikami statycznymi i pełni funkcje równoważenia obciążenia i „odwrotnego serwera proxy”. Wszystko to ma znaczenie dla czasu pracy, szybkości i bezpieczeństwa.

Apache

Logo serwera Apache HTTPS.

Apache to poniekąd „stary człowiek” w technologii serwerów WWW. Jest prawie tak stary, jak sama sieć – od 1995 roku Apache jest oprogramowaniem leżącym u podstaw tysięcy, jeśli nie milionów serwerów.

Przez długi czas Apache był dominującą technologią wśród „sysadminów”. Powodów jest wiele – jedne związane z wydajnością, inne z przyzwyczajenia. Niezależnie od tego, serwery Apache są często używane tam, gdzie konfiguracje mają znaczenie.

Apache jest preinstalowanym oprogramowaniem we wszystkich dystrybucjach Linuksa, więc jest to idealne rozwiązanie dla tego systemu operacyjnego. Jednak chociaż używa innej architektury niż Nginx, nadal oferuje moc, skalowalność i fantastyczną dokumentację.

Wielu administratorów lubi również dostosowywalny charakter Apache i to, jak możesz stworzyć własny serwer, ładując różne moduły.

Ogólne przypadki użycia Nginx vs Apache

Można śmiało powiedzieć, że Apache jest „gniazdem wszystkich transakcji”, jeśli chodzi o obsługę stron internetowych. Jest to jednak mieszane błogosławieństwo. Tak, serwery Apache mogą zrobić prawie wszystko, co potrafi Nginx, ale dzieje się to kosztem mniej wydajnego kodu. Ważnym czynnikiem jest tutaj wiek.

Ponieważ Apache pojawił się w czasie, zanim pojawiły się niektóre z bardziej zaawansowanych aplikacji dla serwerów WWW, baza kodu nie mogła zrobić tego, co było potrzebne do obsługi nowoczesnych stron internetowych. Chociaż te problemy nie muszą być teraz powodem do niepokoju , rozwiązanie takie jak Nginx działa z myślą o nowoczesnej sieci.

W związku z tym Apache jest fantastyczny jako łatwy w konfiguracji serwer dla aplikacji takich jak hosting współdzielony. Jego integracje postrzegają go również jako oprogramowanie lokalnego serwera programistycznego, jako część stosu Linux, Apache, MySQL i PHP (LAMP).

Logotypy wszystkich części stosu LAMP: Linux, Apache, MySQL i PHP.

W przeciwieństwie do tego, Nginx ma bardziej dojrzałą bazę oprogramowania, z większą optymalizacją w porównaniu do Apache. Dobrze, gdy stabilność i bezpieczeństwo są kluczowymi, podstawowymi elementami. Przekonasz się, że serwer Nginx nie jest tak konfigurowalny jak inne typy, a to oznacza, że ​​będziesz miał mniejszy dostęp do jego rdzenia.

Co więcej, nie jest modułowy w taki sam sposób, jak Apache, co czyni go mniej odpowiednim w sytuacji, w której trzeba przeprowadzić dostosowywanie serwera.

Nginx vs Apache: jak popularny jest każdy typ serwera

Przez długi czas oprogramowanie serwera było podobne do wyścigu jednego konia. Apache działał jako dominująca siła przez wiele lat i nadal ma ogromny udział w rynku. Z tego powodu znajdziesz wiele integracji i wsparcia dla serwerów Apache, wraz z najlepszą dokumentacją.

Stanowi to kolejny powód do wybrania Apache i przyczynia się do jego dalszego użytkowania. Jednak Nginx to oprogramowanie serwerowe z ogromnym własnym udziałem w rynku. Z biegiem czasu następuje powolny wzrost użycia Nginx, do tego stopnia, że ​​jest to obecnie najbardziej dominująca technologia serwerów WWW na rynku, choć niewiele.

Patrząc w przyszłość, sugerujemy, że Apache będzie z czasem mniej używany, ponieważ Nginx zapewnia wiele z tego, czego potrzebują administratorzy serwera WWW. Jednak LiteSpeed ​​Web Server i Cloudflare Server są na horyzoncie i mają rosnącą bazę użytkowników i mocne wsparcie. Za kilka lat to porównanie może porównać Nginx do jednego z tych młodszych nowicjuszy.

Nginx vs Apache: techniczny podział funkcji i funkcjonalności

W kilku następnych sekcjach omówimy szereg technicznych aspektów Nginx vs Apache. Chociaż nie możemy omówić wszystkiego, głównym obszarom poświęcimy wystarczająco dużo czasu. W każdym razie, ponieważ stanowią one podstawowe elementy obu typów serwerów, będziesz miał wystarczająco dużo do zrobienia, jeśli chodzi o wybór odpowiedniego oprogramowania.

1. Połączenie i obsługa żądań

Sposób, w jaki serwer obsługuje połączenia, ma kluczowe znaczenie, ponieważ jest to jego „podstawowa waluta”. Jest to dyskusyjne, ale kiedy ludzie chcą dyskutować o względnych zaletach Nginx vs Apache, obsługa połączeń odgrywa dużą rolę w postrzeganiu.

Nginx

Nginx jest „asynchroniczny” i „sterowany zdarzeniami”, co oznacza, że ​​może obsługiwać wiele żądań jednocześnie i przetwarzać je, gdy dostępne są zasoby. Tworzy „procesy robocze” do obsługi przychodzących połączeń, których oczekuje jednocześnie tysięcy. Są to „nośniki wody” dla reszty serwera.

Na przykład każdy proces roboczy będzie nasłuchiwał zdarzeń procesu i połączeń i doda je do ciągłej pętli. Stamtąd serwer może przetworzyć każde zdarzenie i usunąć je po jego zakończeniu. Przepływ serwera Nginx zapewnia nieodłączną skalowalność, a asynchroniczna, nieblokująca architektura również temu służy.

Apache

W przeciwieństwie do tego Apache obsługuje zdarzenia pojedynczo za pośrednictwem wielu modułów przetwarzania wieloprzetwarzania (MPM). Administrator wybierze architekturę połączenia najlepiej dopasowaną do zadania, których jest kilka.

Moduł mpm_prefork jest powszechny. To tworzy procesy podrzędne dla każdego zdarzenia i przetwarza tylko jedno połączenie na raz. Jeśli liczba procesów jest większa niż liczba żądań, trudno byłoby odróżnić Nginx od Apache pod względem wydajności.

Jednak tego typu sytuacja jest rzadka, a serwer Apache często odnotuje większą liczbę żądań niż procesów. Co więcej, ten MPM nie skaluje się dobrze ze względu na zużycie pamięci.

Dla osób pracujących z PHP mpm_prefork jest jedynym bezpiecznym sposobem pracy z modułem interpretera mod_php . Pomimo wad, będzie to MPM, który programista WordPress wybierze, jeśli będzie musiał wdrożyć na serwerze Apache.

Zobaczysz również moduły mpm_worker i mpm_event . Wykonują one podobną operację i lepiej skalują się ze względu na sposób, w jaki mogą tworzyć wiele procesów na kolekcję wątków.

Ta partia MPM pokazuje, jak elastyczny może być Apache, pomimo wad wydajności w niektórych przypadkach.

Obsługa żądań dla treści statycznych i dynamicznych

Zanim przejdziemy dalej, powinniśmy wspomnieć o zawartości statycznej i dynamicznej dla każdego oprogramowania serwerowego. Przeczytasz, że Nginx nie może przetwarzać zawartości dynamicznej, co może być powodem do niepokoju. W rzeczywistości Nginx nie przetwarza tego typu treści w sposób natywny. Zamiast tego wyśle ​​go do zewnętrznego procesora (takiego jak pamięć podręczna), a następnie poczeka na powrót, zanim przeniesie zawartość.

Na potrzeby rozwoju administrator systemu skonfiguruje w tym celu rozwiązanie, takie jak Memcached. To podejście ma negatywy, a mianowicie wydajność. Jednak korzyści z ogólnych kosztów wydajności dla każdej części łańcucha negują to. Nginx nie musi się martwić przetwarzaniem tych żądań, więc może skoncentrować się na swoich obszarach odpowiedzialności z większą wydajnością.

System MPM Apache pozwala przetwarzać zarówno zawartość statyczną, jak i dynamiczną bez potrzeby stosowania innych modułów. W przypadku zawartości dynamicznej Apache osadza w każdym procesie roboczym procesor języka. To proste podejście, które działa dobrze. Możesz także wymienić moduły, jeśli chcesz dokonać zmiany.

2. Konfiguracja serwera

Jedną z bardziej widocznych różnic między Nginx a Apache jest sposób konfiguracji każdego serwera. Nginx stosuje podejście scentralizowane, co oznacza, że ​​użytkownik nie ma możliwości skonfigurowania serwera poza jednym głównym plikiem. Chociaż wydaje się to negatywne, istnieje wiele zalet:

  • Administrator serwera odpowiada za globalne bezpieczeństwo, co zaostrza dostęp do serwera jako całości.
  • Scentralizowany serwer ma większą wydajność niż inne typy. Dzieje się tak, ponieważ Nginx nie musi obsługiwać żądań, aby sprawdzić pliki konfiguracyjne w każdym katalogu.
  • Jest tu efekt domina, ponieważ nie będzie żadnych nadpisań dla serwera z wielu obszarów, co dodatkowo skróci czas żądania.

Jednym ze sposobów, w jaki laik będzie wiedział, że korzysta z serwera Apache, jest obecność plików .htaccess . Są to pliki konfiguracyjne, które możesz dodać niemal w dowolnym miejscu na swoim serwerze. Apache sprawdzi każdy element ścieżki pod kątem pliku .htaccess , gdy zostanie wysłane żądanie.

Plik .htaccess pokazujący kilka reguł przepisywania — porównanie Nginx i Apache

Jest to fantastyczne rozwiązanie dla użytkowników, którzy chcą spersonalizować swoją część serwera, ale mogą oznaczać katastrofę, jeśli jedna z dyrektyw spowoduje problemy z wydajnością lub bezpieczeństwem. To zdecentralizowane podejście jest jednym z powodów, dla których Apache będzie używany na współdzielonym hostingu. Jest to również powód, dla którego system zarządzania treścią (CMS), taki jak WordPress, zapewnia dobrą wydajność na serwerach Apache.

3. Poproś o interpretację

Jedną z głównych różnic między Nginx a Apache, która nie wydaje się oczywista, jest sposób interpretacji żądań. W skrócie:

  • Nginx interpretuje i mapuje żądania przy użyciu jednolitego identyfikatora zasobów (URI) dla każdego komponentu.
  • Apache może również używać identyfikatorów URI do interpretowania żądań, ale częściej można zobaczyć strukturę ścieżek opartą na plikach.

Ponieważ Apache jest przede wszystkim serwerem WWW, do definiowania zasobów użyje bloków <Directory> , <Files> lub <Location> . Kluczową koncepcją jest tutaj to, że wszystko, co widzi Apache, jest powiązane z serwerem sieciowym, więc nie ma niejasności w ścieżce zasobów. Pomyśl o drzewie dokumentów i tak Apache „wizualizuje” system plików serwera.

Plik konfiguracyjny Apache, pokazujący ochronę systemu plików dla określonych katalogów — porównanie Nginx i Apache

W przeciwieństwie do tego, Nginx ma wiele przypadków użycia, takich jak system równoważenia obciążenia, serwer proxy i serwer WWW. Z tego powodu żądania muszą przychodzić jako identyfikator URI, aby Nginx mógł je przetworzyć. Na przykład Nginx używa bloków server i location : pierwszy interpretuje żądany host, a drugi dopasowuje później części URI. Całe żądanie staje się identyfikatorem URI.

Plik konfiguracyjny Nginx — porównanie Nginx i Apache

Ogólnie rzecz biorąc, identyfikator URI jest bardziej elastyczny dla Nginx, ponieważ może dostosować się do dowolnej wykonywanej funkcji. Mimo to system Apache działa, biorąc pod uwagę, że ma on jedynie pełnić rolę serwera WWW.

Nginx vs Apache: Który z nich powinieneś wybrać dla swojego serwera w 2022 roku?

Ogólna odpowiedź na pytanie, które oprogramowanie serwera mam wybrać? jest proste: to jest to, co oferuje Twój dostawca usług hostingowych. W wielu przypadkach nie będziesz miał wyboru. Zauważyliśmy, że wiele hostów internetowych stosuje ten sam wzorzec, który powinieneś dopasować, jeśli chcesz wybrać między Nginx a Apache:

  • Jeśli chcesz uruchomić serwer, który wymaga ciągłej konfiguracji, lub chcesz dać użytkownikom wybór konfiguracji, Apache będzie pasował do rachunku.
  • Jeśli jednak chcesz zapewnić super wydajność, solidne bezpieczeństwo i chcesz obsługiwać konfiguracje, a nie użytkowników, Nginx jest rozwiązaniem.

Jeśli chodzi o wydajność, Apache może zająć więcej pamięci ze względu na swoją nieodłączną architekturę. Nginx będzie lepszy w sytuacjach o dużym natężeniu ruchu, zwłaszcza jeśli ma obsługiwać dużo statycznej zawartości.

Dlatego jeśli polegasz na buforowaniu do przechowywania i udostępniania treści, Nginx może być najlepszą opcją. Należy jednak pamiętać, że Nginx nie może obsługiwać zawartości dynamicznej, więc odczujesz większy spadek wydajności w zależności od wydajności serwera proxy, z którego korzysta Twój serwer.

Idź do góry

Wniosek

Istnieje wiele obszarów WordPressa (i prowadzenia strony internetowej), które oferują niemal przytłaczającą liczbę opcji. Taka jest natura bestii. Nie pomaga to jednak, gdy trzeba szybko uruchomić witrynę.

#Nginx vs #Apache: Który serwer sieciowy jest dla Ciebie odpowiedni?
Kliknij, aby tweetować

Twój wybór typu serwera jest jedną z kluczowych i podstawowych decyzji, o którą będziesz chciał zadbać. Nginx vs Apache to powszechne porównanie, ponieważ oba oferują korzyści w określonych sytuacjach.

Naszym zdaniem Nginx może pokryć większość baz z większą wydajnością, co czyni go lepszą opcją dla większości użytkowników WordPressa. Właśnie dlatego wielu popularnych hostów WordPress zorientowanych na wydajność przeszło w kierunku stosu serwerów całkowicie Nginx, w tym Kinsta i Flywheel.

Niezależnie od tego, możesz bezpiecznie korzystać z tego, co oferuje Twój host, jeśli nie masz tego wyboru, a większość witryn WordPress będzie całkowicie w porządku z dowolnym serwerem internetowym.

Gdzie siedzisz na płocie między Nginx a Apache? Daj nam znać w sekcji komentarzy poniżej!

Bezpłatny przewodnik

5 niezbędnych wskazówek, aby przyspieszyć
Twoja witryna WordPress

Skróć czas ładowania nawet o 50-80%
po prostu postępując zgodnie z prostymi wskazówkami.

Pobierz bezpłatny przewodnik