Jaka jest różnica między pakietem podstawowym, pełnym, dodatkami i lekkimi dla Nginx?

72

nginxna Ubuntu to pakiet wirtualny udostępniany przez jeden z pięciu pakietów z oficjalnych repozytoriów (przynajmniej od 14.04, domyślnie domyślnie nginx-core:

$ apt-cache depends nginx | tail -n+2 | cut -d: -f 2 | sort -u
 nginx-core
 nginx-extras
 nginx-full
 nginx-light
 nginx-naxsi

Jaka jest różnica między tymi pakietami i jakie są zalecane dla nich przypadki użycia?

To nieco stary strona Debian Wiki ma porównania między fabularny extras, full, lighti naxsi, ale nie wspomina się core. Ile zmieniło się w 14.04?


wtórne Jak rozumiem, nginxnie obsługuje włączania w czasie wykonywania modułów takich jak Apache, więc czy instalacja nginx-extraswpływałaby na wydajność?

muru
źródło
1
Wygląda na to, że ktoś zrobił nowszą wersję tabeli porównania funkcji i udostępnił ją w dokumentach Google: docs.google.com/spreadsheet/...
Steven K
1
@StevenKath zwróć uwagę, że ten dokument jest oparty wyłącznie na Debianie. Nie dotyka rdzenia nginx i nie zawiera niestabilnych zmian, które usuwają smak naxsi (ponieważ utrzymanie go nie jest trywialne).
Thomas Ward

Odpowiedzi:

99

Podczas gdy odpowiedź Stevena dotyczy kluczowych punktów i bardzo podstawowego podsumowania tego, czym jest każdy smak, dam ci znacznie szerszy opis różnic, ponieważ dość dużo pracuję nad opakowaniem i bardzo różnymi zestawami modułów w każdy z nich ma absolutnie kluczowe znaczenie dla dobrej odpowiedzi. Podstawowe opisy niewiele oddają porównanie. (Również podziękowania dla Stevena cytujące mój starszy blog (a nawet odnoszące się do mnie jako „opiekuna”. Chciałem przenieść post z Nginx na stronę główną na moim nowym blogu, ale nie miałem okazji .)

Zauważ też, że najnowsze pakiety dla serwera sieciowego NGINX są dostępne w PPA NGINX, utrzymywanym przeze mnie, opartym prawie całkowicie na Debianie. ( Stabilna PPA (1.6.2 od tego postu); Główna linia PPA (1.7.7 od tego postu, z 1.7.8 planowane do wylądowania 4 grudnia 2014 r.))


Różne smaki nginx:

Różne smaki są tą samą wersją nginx, jednak o smakach zdecydowali opiekunowie pakietów Debian w celu zapewnienia różnych zestawów funkcji (dla nginx-extras), a także absolutnego minimum i najbardziej efektywnego „pełnego” zestawu funkcji, które serwery internetowe zwykle używają na stronach internetowych. Dokładny powód, dla którego wybrano funkcję nad inną, nie jest mi znany, jednak w dodatkowej dyskusji z jednym z opiekunów Debiana na IRC wydano oświadczenie potwierdzające moją wstępną ocenę, że każdy wariant miał być innym zestawem funkcji dla inny przypadek użycia - lightdla lekkiego zestawu funkcji, który spełnia absolutnie minimum hostingu witryny, fulldla pełniejszego zestawu funkcji bez uwzględnienia znacznie cięższych dodatków orazextrasdla prawie wszystkiego, co jest w pakiecie, który może być zawarty w Ubuntu. naxsi, przed 15.04, był wariantem Naxsi, w którym znajdowało się tylko minimum modułów, ponieważ naxsi wymagało dość dużych zasobów.

Podobno, według jednego z opiekunów Debiana NGINX, który regularnie koordynuje z Upstream NGINX w prywatnej rozmowie, o której obecnie nie mogę publikować logów, NGINX 2.x będzie obsługiwał moduł ładowalny. W takim przypadku light, fulli extrasstaną się metapakiety które wzywają poszczególnych pakietów zawierających każdy moduł. Data, od której tak się dzieje, nie jest jednak znana, ani które moduły faktycznie będą w stanie to zrobić.

W obecnej postaci nginxpakiet wirtualny został zaprojektowany tak, aby po prostu zainstalować jedną z dostępnych wersji. Domyślnie, jak nginx-coreto jest w głównej części i chcielibyśmy, aby użytkownicy korzystali z niej częściej, nginx-corejest to pierwszy widoczny element i próba instalacji w pakiecie wirtualnym. (Jednak nginxopakowanie może polegać na dowolnym smaku nginxi ma głównie na celu ułatwienie instalacji dla tych, którzy nie potrzebują żadnych konkretnych preferencji dotyczących smaku)

Szczegółowy podział na poszczególne moduły dostępne w każdym wariancie (na podstawie pliku Vividdebian/control i pliku Trustydebian/control (ponieważ pakiety Naxsi zostały usunięte w Vivid)) jest dostępny poniżej. Pamiętaj, że nie odzwierciedla to najbardziej aktualnych zmian w Ubuntu i powinieneś zapoznać się z tymi opisami pakietów, aby upewnić się, że zaktualizowałeś dokładne informacje :

  • nginx-corejest jedynym smakiem w sekcji głównej repozytoriów Ubuntu, począwszy od 14.04, i istnieje tylko w repozytoriach Ubuntu (i nie znajduje się w PPA ani w Debianie i nie będzie nigdy dołączany do Debiana). Jest efektywnie identyczny ze nginx-fullsmakiem, ale nie zawiera żadnych modułów stron trzecich. Uzasadnienie użycianginx-fullponieważ podstawą tego wariantu było to, że chcieliśmy zapewnić stosunkowo pełnoprawny zestaw modułów podstawowych w wbudowanych plikach binarnych, jednocześnie utrzymując moduły innych producentów w tym samym czasie. Jako taki nie zawiera żadnych modułów innych firm, ponieważ Zespół ds. Bezpieczeństwa dokonał przeglądu kodu i stwierdził, że moduły innych firm mają bardzo różne style kodowania, które nie są tak ładnie obsługiwane, jak dołączony pakiet nginx-tarball moduły (jest to omówione bardziej szczegółowo w błędzie Main Inclusion Request / Report , który zawiera punkty dyskusji i dalsze przeglądy dyskusji na temat tego, co może być zawarte w Ubuntu Main nginx). Pełna lista włączonych tutaj modułów znajduje się w opisie pakietu, który tutaj wybrałem:

    STANDARDOWE MODUŁY HTTP: Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Request Limit, Zone Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI , Split Clients, SSI, Upstream, ID użytkownika, UWSGI.

    OPCJONALNE MODUŁY HTTP: Dodawanie, debugowanie, GeoIP, kompresja wstępna Gzip, HTTP Sub, Filtr obrazów, IPv6, Real IP, Spdy, SSL, Status stubu, Podstawienie, WebDAV, XSLT.

    MODUŁY POCZTY: Mail Core, IMAP, POP3, SMTP, SSL.

  • nginx-lightto najlżejszy nginxdostępny smak . Znajduje się w repozytorium Wszechświata i musisz mieć to włączone, aby z niego korzystać. Nie włącza dużej liczby modułów dostępnych w -corelub -full. Zawiera również moduły innych firm. Dostępne w nim moduły to:

    STANDARDOWE MODUŁY HTTP: Core, Access, Auth Basic, Auto Index, Charset, Empty GIF, FastCGI, Gzip, Headers, Index, Log, Map, Proxy, Rewrite, Upstream.

    OPCJONALNE MODUŁY HTTP: Żądanie autoryzacji, debugowanie, kompresja wstępna Gzip, IPv6, Real Ip, SSL, status wejściowy.

    MODUŁY PARTII TRZECIEJ: Echo.

  • nginx-fulljest jednym z bogatszych w funkcje smaków tego nginxpakietu. Podobnie jak jego lightodpowiednik, znajduje się w repozytorium Wszechświata. Umożliwia większość podstawowych modułów, które są standardowe i opcjonalne w źródłowym pliku archiwalnym z nginx, a także kilka innych modułów innych firm zaprojektowanych w celu rozszerzenia możliwości serwera WWW nginx. Jego moduły są następujące:

    STANDARDOWE MODUŁY HTTP: Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Request Limit, Zone Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI , Split Clients, SSI, Upstream, ID użytkownika, UWSGI.

    OPCJONALNE MODUŁY HTTP: Dodawanie, żądanie uwierzytelnienia, debugowanie, GeoIP, prekompresja Gzip, HTTP Sub, filtr obrazu, IPv6, Real IP, Spdy, SSL, Status wejściowy, Podstawienie, WebDAV, XSLT.

    MODUŁY POCZTY: Mail Core, IMAP, POP3, SMTP, SSL.

    MODUŁY STRON TRZECICH: Auth PAM, DAV Ext, Echo, HTTP Substitution Filter, Upstream Fair Queue.

  • nginx-extrasjest najbardziej bogatym w funkcje smakiem nginxpakietu. I podobnie jak jego fulland lightbraci, to też jest w repozytorium Universe. Umożliwia wszystkie moduły, nginx-fullale zawiera również dodatkowe moduły (takie jak moduł Perl) i wiele innych modułów innych firm, zaprojektowanych w celu dalszego rozszerzenia możliwości serwera WWW nginx. Pełna lista modułów znajduje się poniżej:

    STANDARDOWE MODUŁY HTTP: Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Request Limit, Zone Zone, Log, Map, Memcached, Proxy, Referer, Rewrite, SCGI , Split Clients, SSI, Upstream, ID użytkownika, UWSGI.

    OPCJONALNE MODUŁY HTTP: Dodawanie, żądanie autoryzacji, debugowanie, osadzony Perl, FLV, GeoIP, prekompresja Gzip, filtr obrazu, IPv6, MP4, losowy indeks, rzeczywiste IP, bezpieczne łącze, Spdy, SSL, status połączenia, podstawienie, WebDAV, XSLT.

    MODUŁY POCZTY: Mail Core, IMAP, POP3, SMTP, SSL.

    MODUŁY STRON TRZECICH: Auth PAM, Chunkin, DAV Ext, Echo, Embedded Lua, Fancy Index, HttpHeadersMore, HTTP Substitution Filter, http push, Nginx Development Kit, Progress Upload, Upstream Fair Queue.

  • nginx-naxsijest wariantem nginx, który ma dostępny moduł zapory aplikacji sieciowych Naxsi. To także jest w Universe, jednak ten smak nie jest już obsługiwany przez opiekunów Debiana i zostanie całkowicie usunięty z Ubuntu wraz z wydaniem 15.04. Oprócz modułu WAF Naxsi zawiera również znacznie lżejszy zestaw modułów niż nginx-full. Pełna lista modułów znajduje się poniżej:

    STANDARDOWE MODUŁY HTTP: Core, Access, Auth Basic, Auto Index, Browser, Charset, Core, Empty GIF, FastCGI, Geo, Gzip, Headers, Index, Limit Request, Zone Limit, Log, Map, Memcached, Proxy, Referer, Rewrite , Podział klientów, SSI, Upstream, ID użytkownika.

    OPCJONALNE MODUŁY HTTP: Debugowanie, IPv6, Real IP, SSL, Status stubu.

    MODUŁY STRON TRZECICH: Naxsi, Cache Purge, Upstream Fair.


Wykorzystanie zasobów wśród smaków

Chociaż nie jestem świadomy żadnych testów porównawczych dla różnych smaków nginx, zazwyczaj logiczne jest założenie, że im bardziej korzystasz z funkcji wersji, nginxktórej używasz, tym więcej zasobów będzie zużywał.

Jednak w przeciwieństwie do Apache, który może być dziwką z pamięcią z włączoną większą liczbą modułów, nginxnadal nie zjada tyle pamięci w porównaniu z Apache, gdy moduły są włączone. (Wyjątkiem od tego stwierdzenia jest naxsismak. Ten smak zawsze zjada o wiele więcej zasobów, ponieważ jest to Zapora aplikacji sieci Web, a także serwer WWW).

Dodam testy porównawcze do tej odpowiedzi, jeśli je znajdę, ale ponownie nie jestem świadomy żadnych istniejących testów porównawczych dla różnych smaków przeciwko sobie. I chociaż ja prowadzonych witryn nie mają duży ruch, nie zauważyłem żadnych realnych spadek wydajności pomiędzy nginx-extras, nginx-fulllub nginx-lightna stronie PHP napędzane.

Thomas Ward
źródło
Rzeczywiście kanoniczny. Ta cała sprawa rozpoczęła się, gdy zobaczyłem ten wiersz w moim error.logpo zainstalowaniu nginx-extra: [info] 19936#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf. Jest udostępniany, a nie RSS, ale wciąż mnie zastanawiał. Stąd wydajność budzi wątpliwości, ale to kwestia drugorzędna.
muru
2
@muru pushmoduł jest dobrze znany z używania dużej ilości pamięci współdzielonej. Według mojej wiedzy (i mogę się w tym nieco mylić) ta pamięć współdzielona jest używana we wszystkich witrynach na serwerze sieci Web, na których można użyć modułu push. Jednak ten moduł jest modułem strony trzeciej, więc wszelkie rzeczywiste problemy z nim powinny być kierowane do ich opiekunów :)
Thomas Ward
1
Nie, żadnych problemów. Czy dostaniesz się do którejkolwiek z nowszych wersji z Twojego PPA backports? A ponieważ są one prawdopodobnie zbudowane z tego samego źródła, łatka zastosowana przez zespół ds. Bezpieczeństwa nginx-corerównież będzie dostępna dla -fulli -extra, prawda?
muru
3
@muru Niestety pakowanie w wersjach PPA odbywa się oddzielnie od Ubuntu. Obecnie bardzo trudne jest przeniesienie pakietu do starszych wersji - ostatecznie odbywa się to w PPA, ponieważ nie muszę się niepokoić scalaniem zmian Debiana w zmiany Ubuntu. Od czasu głównego włączenia nie badałem backportowania, ponieważ musiałoby być wiele zmian, które należałoby usunąć, aby pasowały do ​​tego, co jest dostępne w starszych wersjach. (a krople pakietu naxsi uniemożliwiają teraz backportowanie wersji 15.04).
Thomas Ward
2
@muru I tak, wszelkie poprawki zastosowane jako aktualizacje bezpieczeństwa (lub jako standardowe aktualizacje wersji) w 14.04 i późniejszych nginx-corewersjach będą miały zastosowanie, podobnie jak inne smaki nginxdostępne w tym repozytorium, ponieważ wszystkie oparte są na tej samej podstawie kodu. Mają po prostu różne ./configurelinie, aby włączyć lub wyłączyć różne moduły.
Thomas Ward
14

Oto ocena bardzo wysokiego poziomu, oparta głównie na opisach w paczkach . (Mam zamiar nie podać przykładowych przypadków użycia dla każdego, ale doszedłem do tego, aby zaspokoić moją ciekawość, więc równie dobrze mogę to wnieść).

Od najmniejszej do największej:

nginx-light: „wersja podstawowa”

Minimalny zestaw modułów dla podstawowej funkcjonalności.

nginx-naxsi: „wersja z naxsi”

Minimalny zestaw, a także wzmocniona konfiguracja „Nginx Anti Xss & Sql Injection” oraz wymagane wtyczki.

nginx-core: „wersja podstawowa”

Standardowe wdrożenie nginx, z wyłączeniem modułów innych firm.

To pierwszy pakiet nginx obsługiwany przez Canonical. Znajduje się w „głównym” repozytorium Ubuntu zamiast w obsługiwanym przez społeczność repozytorium „wszechświatowym”. Zobacz ogłoszenie „nginx-core jest teraz w Ubuntu Trusty 14.04 Main!” na archiwum nieoficjalnego (starszego i już nieistniejącego) bloga opiekuna lub na kopii starego postu na nieoficjalnym blogu opiekuna :

żaden z już ustalonych smaków nginx nie jest zawarty w Ubuntu Main (nginx-light, nginx-full, nginx-extras i nginx-naxsi). Zespół ds. Bezpieczeństwa Ubuntu powiedział, że moduły innych producentów są bardzo różne w kodowaniu i dlatego nie mogą być obsługiwane.

W tym celu stworzyliśmy pakiet o nazwie nginx-core, który został zawarty w głównym repozytorium. Ten pakiet zawiera tylko moduły, które są dostarczane z podstawowym pakietem nginx. Do tego pakietu nie dołączamy żadnych modułów innych firm, tylko moduły pochodzące z NGINX upstream.

nginx-full: „wersja standardowa”

Standardowe wdrożenie nginx, w tym często używane moduły innych firm.

Dodatki nginx: „wersja rozszerzona”

Standardowe wdrożenie nginx plus kilka rzadko używanych i dużych modułów.

Steven K.
źródło
1
Jedno: jak rozumiem, nginxnie obsługuje włączania modułów tak jak Apache, więc czy instalacja nginx-extrasmogłaby mieć wpływ na wydajność?
muru
1
naxsi jest zawarte tylko w -naxsi i -extras, a nie -core lub -full. Korzystanie z opcji -extras prawdopodobnie będzie miało wpływ na wydajność, z pewnością większe zużycie pamięci niż lżejszy pakiet.
Steven K,
2
To jest przeterminowane. Opublikuję pełniejsze oświadczenie w tej sprawie, ponieważ mam duży wpływ na pakiet nginx.
Thomas Ward
1
@ThomasW. Wow, nie jesteś tym kolesiem, którego cytowałem powyżej z „bloga opiekuna”?
Steven K,
1
@StevenKath Yeppers, a nawet dotknąłem tego punktu w mojej odpowiedzi. Musiałem przełączyć poprzedni blog w tryb offline, ponieważ Wordpress był złym elementem frameworka, ale kwestia nadal jest ważna. Jestem daleki od „oficjalnego opiekuna” w Ubuntu, ale prawdopodobnie wykonuję najwięcej konserwacji pakietu i prawdopodobnie jestem uważany za „nieoficjalnego opiekuna”.
Thomas Ward