Rosnąca popularność Nginx

Wśród serwerów WWW dla systemów linux/unix do niedawna mieliśmy do czynienia z monopolem. Na rynku dominował serwer Apache, a więc jeden z elementów popularnego LAMP (Linux Apache MySql PHP). Mimo, iż nadal jest to najbardziej popularne rozwiązanie, to jednak trudno dziś mówić o hegemonii. Do głosu dochodzą też inne serwery, a jednym z nich jest Nginx. Stworzony przez Igora Sysojewa charakteryzuje się wyraźną lekkością. Jest niezwykle wydajny, a przy tym zużywa mało pamięci. W tej chwili Nginx jest trzecim co do popularności serwerem WWW tuż po Apache i Microsoft. W ostatnim czasie coraz więcej administratorów linux porzuca jednak Apache na rzecz opisywanego serwera, twierdząc że jest znacznie lepiej zaprojektowany oraz sprawdza się przy dużych projektach, a więc wszędzie tam gdzie dany serwis poddany jest dużemu obciążeniu. Innymi słowy Nginx to idealny serwer dla wielkich portali, które sprowadzają każdego dnia ruch liczony w tysiącach userów. Wielu administratorów używa go też jako serwer proxy dla HTTP i IMAP/POP3, jednak wydaje się, że jego przyszłość to alternatywa dla Apache’a.

Porównując wydajność serwera http Nginx do Apache okazuje się, że ten pierwszy ma zdecydowaną przewagę. Przy 10 i 100 równoległych połączeniach Apache jest w stanie obsłużyć średnio 93 żądania, natomiast Nginx aż 350. Poza wydajnością przewaga Nginx wynika również ze sposobu obsługi połączeń przychodzących. W przypadku Apache każde nowe połączenie wymaga uruchomienia nowego procesu lub wątku. Nie jest to z pewnością zbyt dobrym rozwiązaniem. Jeśli chodzi o Nginx mamy tu zupełnie inny model. Jeden proces jest w stanie obsłużyć nawet kilka połączeń. Co więcej, jeśli na jednym połączeniu nic się nie wydarzy, proces Nginxa może obsługiwać inne aktywne połączenia. W przypadku Apache’a nie jest już tak kolorowo. Proces lub wątek w takiej sytuacji czeka bezczynnie.

Warto również dodać, że Nginx stosuje tak zwany polling, a więc blokowanie procesów (lub wątków), poza tym jest tu jeden worker na 1 rdzeń procesora. Nie bez znaczenia jest też fakt, że mamy do dyspozycji specjalny mechanizm, który tym zarządza.

Dla niektórych użytkowników dużym minusem opisywanego serwera jest z kolei brak obsługi pliku .htaccess oraz popularnego modułu przekierowań mod_rewrite, którym może pochwalić się Apache. Nginx nie radzi sobie również z uruchamianiem prostych skryptów CGI. Nie oznacza to jednak sytuacji bez wyjścia. Doświadczony administrator linux bez problemu poradzi sobie na przykład z przypisaniem dyrektyw rewrite w configu serwera i dostosuje to do każdego CMS-a.

Podsumowując można powiedzieć, że serwer Nginx jest godny uwagi ze względu na swoją wysoką wydajność. Podczas pracy nie zużywa dużej ilości zasobów, a to dla wielu administratorów serwera jest informacja cenniejsza niż złoto. Warto zaznaczyć, że do uzyskania w pełni zadowalających efektów, należy odpowiednio zoptymalizować serwer Nginx, jednak nie powinno być z tym większych problemów. W sieci z łatwością znaleźć można artykuły poświęcone instalacji oraz konfiguracji tego serwera.