Czego brakuje Nginxowi Apache?

11

Mówi się, że Nginx jest znacznie bardziej zasobooszczędny i łatwiejszy do skonfigurowania niż Apache. Znajomy powiedział mi, że „nie może robić niektórych rzeczy, które potrafi Apache, ale i tak nie potrzebuję tych rzeczy”.

Nadal jestem ciekawa: jakie rzeczy Apache może zrobić, czego Nginx nie potrafi? Nie potrzebuję wyczerpującej listy, tylko ogólne wyobrażenie o scenariuszach, w których Apache byłby lepszym wyborem.

Nathan Long
źródło

Odpowiedzi:

9

Myślę, że największymi brakującymi elementami Nginx jest pełna obsługa WebDAV. Prawie każdy inny aspekt jest objęty modułem podstawowym lub zewnętrznym.

Nginx nie obsługuje z natury rzeczy takich jak mod_php, więc nie jestem pewien, czy można powiedzieć, że Nginx brakuje tych części. To bardziej, jak Nginx mówi ci zdecydowanie, że używanie tego jest głupie.

Martin Fjordvald
źródło
+1 Chociaż nie zgadzam się z tym, że każde możliwe użycie mod_php i tego typu rzeczy jest „głupie”, zgadzam się z resztą.
Chris S
Czy to komentarz hejtera php, czy jest coś naprawdę złego w mod_php? Połączyć? Pytam, ponieważ prawie wszystko, co mam, używa mod_php .. i proszę, nie dbam o to, co według ciebie jest lepsze, chciałbym tylko wiedzieć, co jest nie tak z mod_php
Safado
3
mod_php nie ma nic wspólnego z samym PHP. Ma to związek z interakcją PHP z Apache. Problem polega na tym, że gdy osadzasz PHP w Apache, proces, który obsługuje PHP i proces, który obsługuje plik obrazu 2kb, jest dokładnie tym samym procesem. Jeśli klient końcowy działa wolno, wówczas twój bardzo drogi proces może wyświetlać mały obraz przez 2 sekundy, czyli czasu, którego nie może wydać na PHP.
Martin Fjordvald
+1 „To bardziej, jak Nginx mówi ci zdecydowanie, że używanie tego jest głupie”.
4

Apache ma ogromną liczbę dostępnych modułów, które pozwalają na pewne scenariusze wdrażania, które nie są możliwe w Nginx.

Jednym z przykładów jest mod_dav_svnhosting Subversion przez HTTP. Jest dostępny tylko dla Apache. Inne godne uwagi przykłady to takie jak mod_perllub mod_php. Podczas gdy większość tradycyjnych ustawień można również wykonać za pomocą FCGI (lub WSGI lub pasażera), faktyczny proces tłumacza może być korzystny, jeśli potrzebujesz np. Wdrożyć niestandardowe schematy uwierzytelniania w serwerze internetowym (tak jak w przypadku hostingu git lub svn z Redmine / ChiliProject).

Ogólnie rzecz biorąc, twój przyjaciel ma rację: najczęstsze scenariusze wdrażania można również rozwiązać za pomocą nginx, ale Apache wciąż jest bardziej elastyczny, jeśli musisz zbudować więcej „specjalnych” rzeczy.

Holger Just
źródło
3

Krótka wersja tej historii jest taka, że ​​Apache ma wiele wtyczek i społeczności wokół niej. Nginx, istnieje stosunkowo krótko, więc nie ma jeszcze bazy kodu społeczności.

Kiedy ludzie pytają mnie, jaka jest różnica, Nginx jest nożem do steków, nadaje się do różnych zastosowań i robi pewne rzeczy wyjątkowo dobrze. Apache to szwajcarski scyzoryk, ma mnóstwo różnych funkcji i radzi sobie z nimi całkiem dobrze.

Chris S.
źródło
Myślę, że możesz być nieco przestarzały w kwestii tego, co potrafi Nginx, w niektórych obszarach jest znacznie bardziej wszechstronny niż Apache. Brak serwera proxy HTTP / 1.1 i WebDAV Nie mogę wymyślić wielu rzeczy, których brakuje.
Martin Fjordvald
@MartinFjordvald Istnieje wiele funkcji, które Nginx celowo postanowił nie robić, nie można powiedzieć, że „zaginęły”, ale nie można twierdzić, że Nginx może zrobić wszystko, co potrafi Apache. Jest to kompromis i pochwalam Nginx za dokonane wybory.
Chris S
Cóż, ponieważ mój oryginalny komentarz proxy HTTP / 1.1 jest teraz obsługiwany, dlatego nie jesteśmy obsługiwani przez hosting webdav i svn. Dzieje się tak, jeśli nie bierzemy pod uwagę takich zagadnień jak dynamicznie połączone moduły, co jest prawdą, że nginx zdecydował się nie robić do tej pory.
Martin Fjordvald
1

Na początek wiele modułów i zainstalowana ginourmous podstawa. Ale Apache nie powinien dokładnie przyglądać się temu, co robi Apache : działa o wiele lepiej, obsługując dynamiczne treści, takie jak PHP, Python, Perl, Java itp.

Oczywiście możesz to zrobić również z Nginxem (ale to trochę cholerny IMHO), ale rozwiązania są o wiele bardziej sprawdzone i dojrzałe, działając na Apache niż na NginX, który z kolei jest znacznie lepszy niż Apache pod względem obsługi dużych obciążeń i doskonałej rewriter / reverse proxy.

Do każdego zadania odpowiednie narzędzie!

rdzeń rdzeniowy
źródło
Być może było to prawdą przed 2008 r., Kiedy po raz pierwszy wdrożyłem nginx na produkcyjnym serwerze internetowym, ale teraz tak się nie wydaje. Bardzo chciałbym zobaczyć, dlaczego według ciebie model Apache polegający na włączaniu tłumaczy do serwera WWW jest lepszy.
Michael Hampton