tego rodzaju pytanie może zostało zadane tutaj, ale nie mogłem znaleźć żadnego, które pasowałoby do mojego pytania. Słyszałem, że wydajność Nginx jest imponująca, ale Apache ma więcej dokumentów, społeczności (czytaj: ekspert), aby uzyskać pomoc
Teraz chcę wiedzieć, jak oba serwery WWW porównują pod względem wydajności, łatwości konfiguracji, poziomu dostosowania itp. JAKO serwer REVERSE PROXY w środowisku VPS?
Wciąż ważę między nimi dla rubinowej aplikacji internetowej (nie ROR) obsługiwanej z cienką (jedną z Ruby web server).
Konkretna odpowiedź będzie mile widziana. Ogólna odpowiedź nie dotykająca ruby jest w porządku. Nadal jestem noob w administracji serwerem WWW.
Odpowiedzi:
Chciałem umieścić to w komentarzu, ponieważ zgadzam się z najważniejszym punktem odpowiedzi webdestroyas, ale stało się to trochę za długo.
Jesteś w środowisku VPS, co oznacza, że najprawdopodobniej będziesz miał mało pamięci RAM. Tylko z tego powodu będziesz chciał Nginx, ponieważ jego pamięć jest mniejsza niż Apache.
Nie zgadzam się również z niektórymi z wymienionych argumentów.
Łatwość konfiguracji:
Nginx nie jest trudniejszy niż Apache. To jest inne. Jeśli jesteś przyzwyczajony do Apache, zmiana zawsze będzie trudniejsza, nie oznacza to, że sam styl konfiguracji jest trudniejszy. Migrowałem całkowicie z Apache do Nginx ponad rok temu i dzisiaj miałbym problem z konfiguracją serwera Apache, podczas gdy uważam, że Nginx jest bardzo łatwy do skonfigurowania.
W przypadku Ruby:
Nginx ma Passenger, jednak zazwyczaj widzę, że jest to opisywane jako gorsza metoda łączenia się z Ruby. Nie jestem programistą Ruby, więc nie mogę tego zweryfikować, ale często widzę Unicorn i Thin jako lepszą alternatywę.
Podsumowując:
Nginx został stworzony jako odwrotny serwer proxy. Początkowo wystarczyło udostępnić pliki statyczne i odwrócić proxy do serwera zaplecza przez HTTP / 1.0. Od tego czasu dodano fastcgi, równoważenie obciążenia i różne inne funkcje, ale jego pierwotnym celem było podawanie plików statycznych i odwrotnego proxy. I robi to naprawdę dobrze.
Przeciwnie, Apache jest serwerem WWW ogólnego przeznaczenia. Nie mam wątpliwości, że może doskonale odwrócić proxy, ale nie został zaprojektowany tak, aby miał minimalny rozmiar pamięci, w wyniku czego wymaga więcej zasobów niż Nginx, co oznacza, że mój początkowy argument środowiska VPS wchodzi w grę.
źródło
Wydajność:
NGinX. Ten serwer jest znany jako jeden z najlepiej działających serwerów internetowych i jest używany przez wiele różnych firm (Notable, MediaTemple)
Łatwość konfiguracji:
Apache. Konfiguracja Apache jest naprawdę prosta i bardzo wydajna. Nginx jest potężny, ale może być bardzo trudny do zrozumienia, ponieważ bardziej przypomina język programowania niż plik konfiguracyjny.
Poziom dostosowania:
Apache. Apache ma dla niego mnóstwo modów i innych wtyczek. Chociaż Nginx wciąż ma do tego przygotowane wtyczki, myślę, że Apache ma o wiele więcej niż Nginx.
Dla Ruby:
Wiem, że Nginx może być używany jako potężny moduł równoważenia obciążenia w Mongrel / webrick. Jednak Apache ma Phusion / Passenger, dzięki czemu integracja jest przyjemniejsza.
Zwycięzca odwrotnego proxy:
NGinX
źródło
Nginx jest oparty na zdarzeniach, podczas gdy apache jest oparty na procesach. Pod dużym obciążeniem robi to różnicę na świecie ... Apache musi rozwidlać lub rozpocząć nowy wątek dla każdego połączenia, podczas gdy nginx nie. Różnica ta widoczna jest głównie w zużyciu pamięci, ale także w czasie reakcji użytkownika i innych wskaźnikach wydajności. Nginx może obsługiwać dziesiątki tysięcy jednoczesnych połączeń HTTP HTTP na nowoczesnym sprzęcie. Apache zużyje 1-2 MB stosu dla każdego połączenia, więc robiąc matematykę widzisz, że możesz obsłużyć tylko kilkaset, a może tysiące połączeń jednocześnie, bez konieczności zamiany.
Używamy nginx przed Apache i IIS w naszym środowisku jako proxy równoważenia obciążenia i buforowania, i nie może być szczęśliwszy. Używamy dwóch małych pudełek Nginx zamiast pary bardzo drogich dzierżawionych urządzeń F5, a nasze strony są znacznie szybsze zarówno w odczuciu, jak i mierzonych czasach odpowiedzi.
źródło
Byłem w tym samym dylemacie co Ty około dwa tygodnie temu.
Aby dać Ci bardzo zwięzłą odpowiedź: z moich badań nginx jest naprawdę szybki i przyjazny dla zasobów, ale udało się go jedynie odwrócić statyczne pliki proxy. Reszta opiera się na rozwiązaniach, które musisz skonfigurować lub wykonać skrypt.
AFAIK nginx nie ma plików htaccess, więc musisz znaleźć drogę, jeśli zależy od tej funkcji.
AFAIK wszystko, co potrzebne działa i widziałem tutoriale.
Pójdę z nginx z moją konfiguracją testowania i profilowania. Mam typową aplikację LAMP.
Czytałem, że są ludzie, którzy odwracają proxy i obsługują pliki statyczne z nginx i przekazują wszystko inne, takie jak PHP, do działającej instancji Apache. Twierdzą, że to dobry kompromis. Nie mam danych o wydajności, ale możesz chcieć wiedzieć.
źródło
W ciągu ostatnich kilku lat miałem poważne problemy z mod_proxy Apache'a na różnych platformach w różnych środowiskach. Od czasu do czasu po prostu przestanie działać, a jedynym lekarstwem wydaje się być ponowne uruchomienie serwera Apache.
Osobiście nie pytałbym „nginx vs Apache”, ale „nginx vs lighttpd” - i to jest znacznie trudniejsze połączenie!
źródło