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

Chociaż istnieje wiele różnych typów oprogramowania serwerowego, często ograniczasz rywali do Nginx vs Apache. Wynika to z faktu, że oba oferują najwyższą wydajność w wielu różnych konfiguracjach serwerów i lepiej pasują do niektórych aplikacji niż inne.

Mimo to nadal będziesz chciał się zastanowić, który z nich ma większy sens dla Twoich potrzeb. Istnieje kilka różnych kategorii, na które należy zwrócić uwagę, takich jak obsługa systemu operacyjnego (OS), bezpieczeństwo, dokumentacja i (oczywiście) wydajność.

W tym poście porównamy Nginx z Apache w wielu różnych obszarach. Na koniec podsumujemy nasze ustalenia i podamy informacje potrzebne do wybrania odpowiedniej opcji.

Przedstawiamy Nginx i Apache

Zanim przejdziemy do szczegółowych informacji o każdym typie serwera, przedstawimy podsumowanie 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

Logo Nginxa.

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

Jest to rozwiązanie typu open source, które wielu użytkowników uważa za stabilność i skalowalność. Wynika to (po części) z architektury sterowanej zdarzeniami – o czym więcej później. W rzeczywistości częścią celu pierwszego wydania Nginx była możliwość obsługiwać 10 000 połączeń od razu. To było konieczne w 2004 roku, ze względu na szybko rozwijającą się sieć w tamtym czasie.

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

Apache

Logo serwera Apache HTTPS.

Apache jest w pewnym sensie „starym człowiekiem” technologii serwerów WWW. Jest prawie tak stary jak sama sieć — od 1995 r. Apache jest oprogramowaniem rdzenia tysięcy, jeśli nie milionów serwerów.

Przez długi czas Apache był dominującą technologią wśród administratorów systemu. Jest tego wiele powodów – niektóre związane z wydajnością, a inne z przyzwyczajenia. Niezależnie od tego serwery Apache są często używane tam, gdzie liczy się konfiguracja.

Znajdziesz Apache jako wstępnie zainstalowane oprogramowanie we wszystkich dystrybucjach Linuksa, więc jest to idealne rozwiązanie dla tego systemu operacyjnego. Jednak chociaż wykorzystuje inną architekturę niż Nginx, nadal oferuje moc, skalowalność i fantastyczną dokumentację.

Wielu administratorów systemu lubi również konfigurowalny charakter Apache i sposób, w jaki można dostosować serwer do własnych potrzeb, ładując różne moduły.

Ogólne przypadki użycia dla Nginx vs Apache

Śmiało można powiedzieć, że Apache to „wszystko w jednym miejscu”, jeśli chodzi o obsługę stron internetowych. Jest to jednak mieszane błogosławieństwo. Tak, serwery Apache mogą zrobić prawie wszystko, co Nginx, ale odbywa się to kosztem mniej wydajnego kodu. Wiek jest tu czynnikiem.

Ponieważ Apache pojawił się w czasie, zanim mieliśmy 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 niekoniecznie są powodem do niepokoju terazrozwiązanie takie jak Nginx działa z myślą o nowoczesnej sieci.

W związku z tym przekonasz się, że Apache jest fantastycznym, łatwym w konfiguracji serwerem dla aplikacji takich jak hosting współdzielony. Jego integracje postrzegają go również jako oprogramowanie lokalnego serwera programistycznego, jako część systemów Linux, Apache, MySQLoraz PHP (LAMPA) stos.

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

Natomiast Nginx ma bardziej dojrzałą bazę oprogramowania, z większym usprawnieniem w porównaniu do Apache. Dobrze tam, gdzie stabilność i bezpieczeństwo to kluczowe, podstawowe elementy. Przekonasz się, że serwer Nginx nie jest tak konfigurowalny jak inne typy, a to oznacza, że ​​będziesz mieć 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 do sytuacji, w których trzeba dostosować serwer.

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

Przez długi czas oprogramowanie serwerowe przypominało wyścig jednego konia. Apache działał jako dominująca siła od wielu lat i nadal ma ogromny udział w rynku. Z tego powodu znajdziesz wiele integracji i wsparcia dla serwerów Apache, wraz z najwyższej klasy dokumentacją.

Jest to kolejny powód, aby wybrać Apache i przyczynia się do jego dalszego używania. Jednak Nginx to oprogramowanie serwerowe z rozszerzeniem ogromny udział w rynku własnego. Z biegiem czasu obserwuje się powolny wzrost wykorzystania 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 dużo tego, czego administratorzy systemu potrzebują na serwerze WWW. Jednakże, Serwer WWW LiteSpeed i Cloudflare Server są na horyzoncie i mają rosnącą bazę użytkowników oraz duże 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ł więcej niż wystarczająco dużo do zrobienia, jeśli chodzi o wybór odpowiedniego oprogramowania dla siebie.

1. Połączenie i obsługa zgłoszeń

Wiedza o tym, jak serwer obsługuje połączenia, jest niezbędna, ponieważ jest to jego „podstawowa waluta”. Można się spierać, 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, dopóki dostępne są zasoby. Tworzy „procesy robocze” do obsługi połączeń przychodzących, których oczekuje jednocześnie tysięcy. Są to „przewoźnicy wody” dla reszty serwera.

Na przykład każdy proces roboczy będzie nasłuchiwał zdarzeń procesu i połączeń oraz dodawał je do ciągłej pętli. Stamtąd serwer może przetwarzać każde zdarzenie i usuwać je po jego zakończeniu. Przepływ serwera Nginx zapewnia naturalną skalowalność, a asynchroniczna, nieblokująca się architektura również to zapewnia.

Apache

W przeciwieństwie do tego, Apache obsługuje zdarzenia pojedynczo przez wiele Moduły wieloprzetwarzające (MPM). Sysadmin wybierze architekturę połączenia najlepiej dopasowaną do zadania, a jest ich kilka.

The mpm_prefork moduł jest wspólny. Spowoduje to utworzenie procesów potomnych dla każdego zdarzenia i będzie 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 w wielu przypadkach będzie widział 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 mod_php moduł tłumacza. Pomimo wad będzie to MPM, które programista WordPress wybierze, jeśli będzie musiał wdrożyć na serwerze Apache.

Zobaczysz również mpm_worker oraz mpm_event moduły też. Wykonują one podobne operacje i lepiej skalują się ze względu na sposób, w jaki mogą tworzyć wiele procesów na zbiór 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 serwera. Przeczytasz, że Nginx nie może przetwarzać treści dynamicznych, co może budzić niepokój. W rzeczywistości Nginx nie będzie przetwarzać tego typu treści w natywny sposób. Zamiast tego wyśle ​​go do zewnętrznego procesora (takiego jak pamięć podręczna), a następnie zaczeka na powrót, zanim przeniesie zawartość.

Na potrzeby programowania administrator systemu skonfiguruje rozwiązanie jak Memcached dla tego. Podejście to ma wady, a mianowicie wydajność. Jednak korzyści związane z kosztami ogólnymi wydajności dla każdej części łańcucha negują to. Nginx nie musi martwić się przetwarzaniem tych żądań, dzięki czemu 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 procesor języka w każdym procesie roboczym. To proste podejście, które dobrze się sprawdza. Możesz także wymieniać moduły, jeśli chcesz dokonać zmiany.

2. Konfigurowanie 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:

  • Za globalne bezpieczeństwo odpowiada administrator serwera, co utrudnia dostęp do całego serwera.
  • Scentralizowany serwer ma większą wydajność niż inne typy. Dzieje się tak, ponieważ Nginx nie będzie musiał obsługiwać żądań sprawdzania plików konfiguracyjnych w każdym katalogu.
  • Występuje tutaj efekt domina, ponieważ nie będzie żadnych nadpisań dla serwera z wielu obszarów, co jeszcze bardziej skraca czas żądania.

Jednym ze sposobów, w jaki laik będzie wiedział, że używa serwera Apache, jest obecność .htaccess pliki. Są to pliki konfiguracyjne, które można dodać niemal w dowolnym miejscu na serwerze. Apache sprawdzi każdy element ścieżki pod kątem a .htaccess plik, gdy zostanie złożony wniosek.

Plik .htaccess przedstawiający niektóre reguły 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 hostingu współdzielonym. 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 tłumaczenie

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

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

Ponieważ Apache jest przede wszystkim serwerem WWW, będzie z niego korzystać <Directory>, <Files>lub <Location> bloki do definiowania zasobów. Kluczową koncepcją jest tutaj to, że wszystko, co Apache „widzi”, jest powiązane z serwerem WWW, więc nie ma dwuznaczności w ścieżce zasobów. Pomyśl o drzewie dokumentów, a oto jak Apache „wizualizuje” system plików serwera.

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

W przeciwieństwie do Nginx ma wiele przypadków użycia, takich jak moduł równoważenia obciążenia, serwer proxy i serwer WWW. Z tego powodu żądania muszą być dostarczane jako URI, aby Nginx mógł je przetworzyć. Na przykład Nginx używa server oraz location bloki: pierwsza interpretuje żądanego hosta, a druga później dopasowuje części URI. Całe żądanie staje się identyfikatorem URI.

Plik konfiguracyjny Nginx — porównanie Nginx i Apache

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

Nginx vs Apache: Który wybrać dla swojego serwera w 2023 roku

Uniwersalna odpowiedź na Jakie oprogramowanie serwerowe wybrać? jest prosta: jest to ta, którą 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 stałej konfiguracji lub chcesz dać użytkownikom wybór konfiguracji, Apache będzie pasował do rachunku.
  • Jeśli jednak chcesz zapewnić super wydajność, solidne zabezpieczenia i chcesz obsługiwać konfiguracje, a nie użytkowników, Nginx jest rozwiązaniem.

Jeśli chodzi o wydajność, Apache mogą zajmują więcej pamięci ze względu na swoją wrodzoną architekturę. Nginx będzie lepszy w sytuacjach o dużym natężeniu ruchu, zwłaszcza jeśli musi obsługiwać wiele statycznych treści.

Dlatego jeśli polegasz na buforowaniu do przechowywania i udostępniania treści, Nginx może być najlepszą opcją. Pamiętaj jednak, że Nginx nie może obsługiwać treści dynamicznych, więc odczujesz większy spadek wydajności w zależności od wydajności serwera proxy używanego przez serwer.

Wniosek

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

Twój wybór typu serwera to jedna kluczowa decyzja na pierwszej linii, nad którą będziesz chciał zachować szczególną ostrożność. Nginx vs Apache to powszechne porównanie, ponieważ oba oferują korzyści w określonych sytuacjach.

Naszym zdaniem Nginx może obsłużyć większość baz z większą wydajnością, co czyni go lepszą opcją dla większości użytkowników WordPress. Właśnie dlatego wielu popularnych hostów WordPress zorientowanych na wydajność przeszło w kierunku stosu serwerów opartego wyłącznie na 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 takiego wyboru, a większość witryn WordPress będzie całkowicie w porządku z dowolnym serwerem internetowym.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Verified by MonsterInsights
Яндекс.Метрика