Czym jest Nginx i w jaki sposób działa? Definicja, funkcjonalności i możliwości tego rozwiązania. Porównanie z kultowym Apache i rekordowo szybkim LiteSpeed.
Spis treściSerwer Nginx działa w tle tysięcy stron na całym świecie. Zaraz po Apache jest jednym z najpopularniejszych rozwiązań wykorzystywanych na rynku. Stosowany jest jednak głównie przez bardziej doświadczonych użytkowników. Wszystko przez to, że stworzony został z myślą o potężnych, rozbudowanych projektach.
W połączeniu z dość trudną administracją, serwerem WWW Nginx interesują się zwykle profesjonaliści. Nie jest to oczywiście reguła, dla zupełnie początkujących osób natomiast może być wyzwaniem. Nie zawiedzie natomiast ostatecznie nikogo, kto zamierza np.:
- stworzyć własne środowisko hostingowe,
- potrzebuje bezpiecznego serwera do konkretnego, dużego projektu.
Zwykle nazywany NGINX lub nginx w piśmie. Wymawiane jest to w środowisku jako Engine X. Przekonajmy się, co tego typu serwery internetowe mają do zaoferowania użytkownikom. Sprawdźmy, pod jakimi względami prześciga serwery Apache i kto powinien się na niego zdecydować.
Co to jest Nginx? Definicja
Nginx (wymowa: engine X) to darmowy serwer WWW (HTTP) o otwartym kodzie źródłowym, który został stworzony z myślą o bardzo rozbudowanych projektach. Oprogramowanie typu open source sprawia, że cechuje go wysoka dostępność. Wspiera serwisy internetowe zmagające się ze szczególnym obciążeniem.
Oprogramowanie serwera WWW Nginx jest całkowicie bezpłatne i opiera się na licencji BSD. Jednocześnie cechuje je szczególna wydajność, niezawodność i dobra jakość połączenia. To sprawia, że szybko zyskało rozpoznawalność na całym świecie. W kwietniu 2020 roku raport Netcraft ogłosił nawet, że jego wykorzystanie wyniosło 36.91% światowego rynku. Miał być wykorzystywany przez ponad 459 mln domen.
Nginx narodził się oficjalnie w 2002 roku. Miał być odpowiedzią na tzw. problem C10k. Dotyczył on gniazd sieciowych. Sam jego symbol nawiązywał do 10 tysięcy jednoczesnych połączeń do serwera. Celem było zoptymalizowanie zarządzania gniazdami oraz obsłużenie ruchu na tym poziomie.
W przypadku Apache było to problematyczne, a konfiguracja Nginx wprowadziła na rynek zupełnie nową jakość. Ma on bowiem niskie wymagania systemowe, a jednocześnie oferuje wysoką efektywność. Sprawdza się więc przy projektach o dużej skali, choć ma też swoje wady. Programista nie ma co liczyć w jego przypadku na dynamicznie ładowane moduły Nginx. Nieograniczone możliwości konfiguracyjne także nie są jego wyznacznikiem. Czy warto więc po niego sięgnąć i w jakich sytuacjach?
Do czego służy serwer WWW Nginx?
Wśród serwerów internetowych Nginx postrzegany jest jako korporacyjny klasyk. Sprawdza się w przypadku szczególnie rozbudowanych lub często odwiedzanych serwisów. Jest w stanie w jednej chwili obsługiwać więcej połączeń niż kultowy Apache. Jego przewaga jest szczególnie wyraźnie dostrzegalna, gdy obsługuje pliki statyczne.
Nginx opiera się na modelu master-worker. Oznacza to, że w jego ramach funkcjonuje jeden główny proces. Do niego należy natomiast delegowanie pracy do procesów roboczych. W ten sposób jest w stanie wydajnie podchodzić do obsługi żądań. Do ich obsługi stosuje bowiem rozmaite techniki, np.:
- wykorzystując programowanie sterowane zdarzeniami,
- utrzymując przez dłuższy czas otwarte połączenia.
Serwer WWW Nginx bardzo dobrze sprawdza się w systemie plików statycznych. Tego rodzaju zawartość dostarczać może prosto z pamięci RAM. Warunkiem jest to, że wcześniej zasoby te były już obsługiwane lub buforowane. Wykorzystywany jest w tym przypadku własny system buforowania, tzw. FastCGI.
Bezawaryjne funkcjonowanie przy dużych obciążeniach sprawiło, że Nginx zyskał sympatię gigantów działających w sieci. Wykorzystywany jest przez wiele witryn, które odwiedzają miliony ludzi każdego dnia. Mowa tu o tak znanych serwisach, jak Wikipedia czy Facebook.
Jaki system operacyjny działa z serwerem Nginx?
Dzięki wydajności i niezawodności po Nginx sięga wielu specjalistów. Korzyści z tego ma oczywiście zarówno user, jak i administrator czy właściciel serwisu. Problem jednak tkwi w tym, że nie na każdym systemie operacyjnym serwery tego typu da się zainstalować. Działa na systemie GNU (Linux), a także niemalże wszystkich rozwiązaniach z rodziny UNIX, takich jak np.:
- FreeBSD,
- OpenBSD,
- Solaris.
System Windows w przypadku Nginx wspierany jest tylko częściowo. Dla porównania warto tu wspomnieć, że Apache da się zainstalować niemalże na każdym komputerze. To wręcz jedna z jego cech charakterystycznych.
Zwrotny serwer proxy i nie tylko
Nasz artykuł ma za zadanie przedstawić również inne zastosowania serwera Nginx. Powszechnie kojarzony jest jako backend dla wielu witryn internetowych. Oprócz tego natomiast doskonale sprawdza się także jako:
- odwrotny serwer proxy (tzw. reverse proxy czy odwrotne proxy) z innymi serwerami HTTP,
- pamięć podręczna HTTP,
- proxy dla poczty e-mail,
- load balancer.
Ponadto Nginx obsługuje buforowanie, dba o równoważenie obciążenia oraz przesyłanie multimediów w sposób strumieniowy. Nawet bez rozszerzeń proponuje szeroką gamę zasobów systemowych. Działanie proxy odwraca bez żadnych dodatkowych modułów. Oferuje obsługę:
Ten serwer WWW jest polecany przez wiele powszechnie stosowanych systemów CMS. Wspiera go m.in. WordPress, Joomla oraz PrestaShop.
Jakie możliwości ma serwer HTTP Nginx?
Nginx różni się od swoich głównych konkurentów. Został stworzony dla dość specyficznej grupy odbiorców. Osoby początkujące czy nadzorujące niezbyt rozbudowane projekty, mogą mieć z nim więcej problemów niż pożytku. Oprogramowanie serwera WWW Nginx jest bowiem dość skomplikowane w obsłudze. Nie najłatwiej jest też je zoptymalizować. Z drugiej strony, zachwyca prędkością działania i wydajnością. Cały potencjał wydobędą z niego natomiast profesjonaliści, którzy wiedzą, co robią i jaki jest ich cel.
Architektura i wydajność serwera WWW Nginx
Najważniejsza kwestia to architektura Nginxa. Poszczególne zapytania serwer ten obsługuje za pomocą zdarzeń. Nie korzysta z osobnych wątków, tak jak robi to Apache. Dzięki temu w jednym wątku może zająć się wieloma zapytaniami równocześnie. Wpływa to na jego sprawność działania. Pozwala też na zachowanie stabilności łącza, nawet przy dość ograniczonych zasobach.
Do obsługi żądań o pliki statyczne Nginx nie wykorzystuje schematu działania Apache. Oznacza to, że nie sięga do środowiska PHP ani systemu plików. Dzięki temu zawartość statyczną może oferować w sposób efektywniejszy. Treści dynamiczne przetwarzane są przez zewnętrzny proces PHP-FPM. Kiedy odpowiedź jest gotowa, Nginx dopiero przesyła ją użytkownikowi.
Nginx nie korzysta z dynamicznie ładowanych modułów. Udostępnia dodatkowe wtyczki, ale w jego przypadku możliwości konfiguracyjne są dość ograniczone. Nie jest elastyczny i nie oferuje obsługi .htaccess, charakterystycznej dla Apache. To jest też jeden z jego głównych minusów.
Jak korzystać z serwera Nginx krok po kroku?
Serwer WWW Nginx jest bardzo łatwy do instalacji. Aby jednak go uruchomić, musisz upewnić się, że na serwerze nie działa Apache. Następnie możesz zainstalować Nginx przy użyciu poleceń:
sudo apt update
sudo apt install nginx
Jeśli wszystko pójdzie zgodnie z planem, serwer będzie gotowy do działania. Możesz łatwo sprawdzić, czy rzeczywiście ta jest. Wystarczy tylko, że w wyszukiwarce wpiszesz jego adres IP. Powinna wtedy wyświetlić Ci się strona powitalna Nginx. Będzie wyglądała mniej więcej tak:
Kolejnym krokiem jest instalacja PHP-FPM. Zrobisz to przy użyciu komendy:
sudo apt install php-fpm php-mysql
Dalej przejdź do pliku konfiguracyjnego. Może to być np. /etc/nginx/sites-available/default. Tam w bloku server dodaj „index.php” i „odkomentuj”:
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
Zalety i wady Nginx
Zalety Nginx
- szybkość działania,
- efektywność i wydajność nawet przy ograniczonych zasobach,
- różne tryby pracy (serwer, reverse proxy, pamięć podręczna HTTP, load balancer),
- dostępność wtyczek,
- brak opłat i wolny dostęp do kodu,
- rozbudowana i pomocna społeczność,
- wsparcie przez najpopularniejsze systemy CMS.
Wady Nginx
- ograniczone możliwości konfiguracji,
- integralność tylko z niektórymi systemami,
- brak dynamicznie ładowanych modułów,
- nie obsługuje .htaccess,
- dość skomplikowana obsługa, zarządzanie i administracja.
Nginx, Apache czy LiteSpeed? Porównanie
Wiele osób planujących stworzenie własnego serwera rozważa trzy opcje:
- LiteSpeed,
- Nginx,
- Apache.
Hosting LiteSpeed: czym różni się od Apache i Nginx? LiteSpeed to najmłodsze rozwiązanie o najlepszych wynikach testów. Jego twórcy deklarują, że jest w stanie obsługiwać dwa razy większy ruch niż jego konkurenci. Potwierdzają to wyniki opublikowane przez hosting chemicloud.com. Wynika z nich, że Nginx ma ponad dwukrotnie dłuższy czas odpowiedzi na wysłane zapytania. Jeszcze gorzej wygląda to w przypadku Apache.
W większości badań natomiast Nginx prześciga klasycznego Apache. Wynika to przede wszystkim z kwestii jego struktury, którą opisaliśmy powyżej. Jest młodszy, korzysta z nowocześniejszych rozwiązań i podchodzi do problemów w sprawniejszy sposób. Dzięki temu jego wydajność jest wyższa. Z drugiej strony cieszy się większym zaufaniem niż LiteSpeed. Jest gotów do obsługi największych, internetowych gigantów. Korzysta się z niego na całym świecie i wiadomo, że sprawdza się nawet w warunkach ekstremalnych.
Dla osób tworzących ambitne i potężne projekty Nginx może być wariantem doskonałym. Wpisuje się między stosunkowo młodego LiteSpeed i nieco powolnego Apache. Jest jednak wymagający i przyjazny dla osób z doświadczeniem. To, czy stanowi złoty środek między nimi, zależy przede wszystkim od Twoich wymagań i oczekiwań.
Czy i kiedy warto skorzystać z serwera Nginx?
Serwer WWW Nginx zdecydowanie jest wart polecenia. To sprawdzone rozwiązanie, które od lat wykorzystywane jest przez tysiące administratorów. Gwarantuje szybkie działanie, wydajność i niezawodność. Problemem jedynie jest jego konfigurowalność i elastyczność. Ewentualnie kłopoty sprawiać może też początkującym użytkownikom nieco skomplikowana obsługa.
Nginx jest doskonałym rozwiązaniem dla konkretnego typu użytkowników. Zależy Ci na oszczędności zasobów i wydajności? Masz rozbudowany projekt generujący ogromny ruch? Jeśli jesteś w stanie poświęcić dla troski o te aspekty elastyczność, to Nginx jest dla Ciebie. Interesującą alternatywą jest też wykorzystanie go niczym funkcjonalnego komponentu. Może stanowić zawsze dopełnienie zainstalowanego Apache, np. jako reverse proxy czy tryb pamięci HTTP.