Apache vs nginx: czym się różnią i jak przetłumaczyć konfigurację

Apache vs nginx

Apache vs nginx: procesy, .htaccess i tłumaczenie konfiguracji | We.Inc

Apache vs nginx porównane pod kątem obsługi połączeń, plików .htaccess dla katalogów kontra centralnej konfiguracji, przeładowań i proxy, z translatorem popularnych reguł rewrite.

Oba to dojrzałe serwery WWW open source. Apache ładuje moduły do wybranego modelu procesów (prefork, worker lub event) i pozwala każdemu katalogowi nadpisywać ustawienia plikami .htaccess. nginx uruchamia jeden proces master i kilka workerów opartych na zdarzeniach, czyta tylko swoją centralną konfigurację i często stoi przed serwerami aplikacji jako reverse proxy.

Apache i nginx obok siebie

Wybór między nimi sprowadza się głównie do tego, gdzie żyje konfiguracja i kto może ją zmieniać. Ta strona pomija deklaracje z benchmarków, które całkowicie zależą od obciążenia i strojenia, i skupia się na różnicach, z którymi spotykasz się przy prowadzeniu strony: jak każdy serwer obsługuje połączenia, po co istnieje .htaccess i jak przetłumaczyć reguły rewrite, które już masz. Użyj translatora, aby zobaczyć wersję nginx znanej reguły Apache.

Najczęściej zadawane pytania

Czy nginx jest szybszy niż Apache?

To zależy od zadania i strojenia, więc uważaj na każdą pojedynczą liczbę. Workery nginx oparte na zdarzeniach są zaprojektowane tak, by tanio utrzymywać wiele bezczynnych połączeń. MPM event w Apache zmniejszył tę różnicę, również korzystając z bezpiecznego wątkowo pollingu. Zmierz własne obciążenie, zanim zmienisz serwer wyłącznie dla szybkości.

Czy nginx obsługuje pliki .htaccess?

Nie. nginx nie ma plików nadpisujących ustawienia per katalog, więc reguły z .htaccess trzeba przenieść do konfiguracji serwera i przeładować nginx. To świadomy kompromis: brak wyszukiwania plików przy każdym żądaniu, ale reguły mogą zmieniać tylko osoby z dostępem do głównej konfiguracji.

Czy mogę automatycznie przekonwertować .htaccess na nginx?

Proste przekierowania i fallbacki tłumaczą się czysto, co pokazuje translator na tej stronie. Długie łańcuchy RewriteCond z flagami takimi jak [P] lub zmiennymi środowiskowymi musi przeczytać człowiek, bo nginx wyraża ten sam zamiar innymi elementami.

Który wybrać dla strony WordPress lub PHP?

Jeśli hosting daje Ci tylko dostęp do plików, to Apache z .htaccess w ogóle pozwala zmieniać reguły. Na serwerze, który kontrolujesz, oba działają z PHP-FPM; w nginx fallback dla ładnych adresów URL piszesz raz, przez try_files w bloku server.

Jak przeładować konfigurację bez zrywania połączeń?

W nginx uruchom nginx -s reload: master sprawdza nową konfigurację, uruchamia nowe workery i prosi stare o łagodne zakończenie pracy. W Apache apachectl graceful robi to samo dla jego procesów potomnych.

Modele procesów w prostych słowach

Dlaczego .htaccess ma znaczenie

Ta sama strona w obu serwerach

Virtual host w Apache

Pliki statyczne z jednego folderu plus fallback dla SPA, skonfigurowane w vhoście, więc .htaccess nie jest potrzebny.

Blok server w nginx

To samo zachowanie: folder root, fallback przez try_files i własna strona błędu.

Wymuś HTTPS

Apache sprawdza flagę HTTPS; nginx używa osobnego serwera na porcie 80, który tylko przekierowuje.

Przekieruj domenę bez www na www

Dokumentacja nginx zaleca osobny blok server z return zamiast if na hoście.

Fallback dla aplikacji single-page

Serwuj prawdziwe pliki, gdy istnieją, a index.html dla każdej innej ścieżki.

Przekieruj jedną starą stronę

Redirect z mod_alias nie potrzebuje silnika rewrite; nginx dopasowuje dokładną ścieżkę przez location =.

Własna strona 404

Oba kierują błąd na stronę w tej samej witrynie.

Proxy /api do serwera aplikacji

Apache wymaga załadowanych mod_proxy i mod_proxy_http oraz zgodnych końcowych ukośników w obu argumentach; proxy w nginx jest wbudowane.

Blokuj ukryte pliki, takie jak .git

Uniemożliwia serwowanie plików, których nazwy zaczynają się od kropki.

Dodaj nagłówek bezpieczeństwa

Z always oba serwery dodają nagłówek także do odpowiedzi z błędem, nie tylko do udanych.

Filtruj zadania

https, proxy, 404...

Apache (.htaccess lub virtual host)

nginx (blok server)

Żadne zadanie nie pasuje do filtra.

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony