Nginx

Nginx

logo nginx
Typ webový server a proxy server
Autor Igor Vladimirovič Sysoev
Vývojář Společnost NGINX Inc. [d] aIgor Vladimirovič Sysoev
Zapsáno v C [5]
Operační systém Operační systém podobný Unixu a Microsoft Windows
První vydání 4. října 2004 [1]
Nejnovější verze
Testovací verze
Čitelné formáty souborů Certifikát kódovaný PEM [d] [6], soukromý klíč RSA kódovaný PEM [d] [6]a stránky Nginx-dostupné [d]
Licence 2-klauzule BSD licence [7] [8]
webová stránka nginx.org
 Mediální soubory na Wikimedia Commons

Nginx (e ngin e x  - v ruštině se vyslovuje jako enginx nebo engin-x [9][Comm 1] ) je webový server a poštovní proxy server běžící na operačních systémech podobných Unixu (testovaná montáž a provoz na FreeBSD , OpenBSD , Linux , Solaris , macOS , AIX a HP-UX ). Počínaje verzí 0.7.52 se objevilo experimentální binární sestavení pro Microsoft Windows [10] .

Igor Sysoev zahájil vývoj v roce 2002 [11] . Na podzim roku 2004 byla vydána první veřejně dostupná verze. Od července 2011 probíhají práce na nginxu v rámci společnosti Nginx.

Hlavní funkce

Nginx je výrobcem umístěn jako jednoduchý, rychlý a spolehlivý server, který není přetížen funkcemi.

Použití nginx je nejlepší pro statické webové stránky a jako reverzní proxy pro dynamické webové stránky .

HTTP server

SMTP/IMAP/POP3 proxy server

Architektura

V nginx obsluhují pracovní procesy mnoho připojení současně a multiplexují je pomocí volání operačního systému select, epoll ( Linux ) a kqueue ( FreeBSD ). Pracovní procesy provádějí smyčku událostí z ovladačů (viz programování řízené událostmi ). Data přijatá od klienta jsou analyzována pomocí stavového automatu . Analyzovaný požadavek je postupně zpracováván řetězcem modulů určeným konfigurací. Odpověď klientovi je tvořena ve vyrovnávacích pamětech , které ukládají data buď do paměti , nebo ukazují na segment souboru. Buffery jsou sloučeny do řetězců, které určují pořadí, ve kterém budou data přenášena ke klientovi. Pokud operační systém podporuje efektivní I/O operace, jako je writev a sendfile , pak je nginx použije, kdykoli je to možné.

Algoritmus HTTP serveru je následující [12] :

  1. získat další popisovač z kevent(2) ;
  2. číst data ze souboru a zapisovat do soketu pomocí buď write(2) / read(2) , takto [Comm 2] :
zatímco ( ( cnt = číst ( read_file_descriptor , vyrovnávací paměť , velikost_bloku ), napsat ( socket_file_descriptor , vyrovnávací paměť , počet ) == cnt ) ) byte_count += pocet ; buď pomocí systémového volání sendfile(2) , které dělá to samé jako výše uvedený kód, ale v prostoru jádra;
  1. přejděte ke kroku 1.

Konfigurace nginx HTTP serveru je rozdělena na virtuální servery (direktiva "server"). Virtuální servery jsou rozděleny do umístění ("umístění"). U virtuálního serveru je možné nastavit adresy a porty, na kterých budou akceptována spojení, a také jména, která mohou obsahovat "*" pro označení libovolné sekvence v první a poslední části nebo mohou být specifikována regulárním výrazem.

umístění lze specifikovat přesným URI , částí URI nebo regulárním výrazem . Umístění lze nakonfigurovat tak, aby obsluhovala požadavky ze statického souboru, přes proxy server fastcgi/memcached.

Pro efektivní správu paměti používá nginx fondy . Fond  je posloupnost předem přidělených bloků dynamické paměti. Délka bloku se pohybuje od 1 do 16 kilobajtů. Zpočátku je pro fond přidělen pouze jeden blok. Blok je rozdělen na obsazenou oblast a neobsazenou oblast. Výběr malých objektů se provádí přesunutím ukazatele na neobsazenou oblast s přihlédnutím k zarovnání. Pokud neobsazená oblast ve všech blocích nestačí k přidělení nového objektu, je přidělen nový blok. Pokud velikost alokovaného objektu překročí hodnotu konstanty NGX_MAX_ALLOC_FROM_POOL nebo délku bloku, pak je celý alokován z haldy.

Malé objekty jsou tedy alokovány velmi rychle a mají pouze režii zarovnání .

nginx obsahuje modul pro geografickou klasifikaci klientů podle IP adresy . Je založen na databázi korespondence IP adres s geografickým regionem, reprezentovaným jako radixový strom (komprimovaný strom předpon nebo komprimovaný les) v paměti RAM . nginx předem alokuje prvních několik úrovní stromu tak, aby zabíraly přesně 1 stránku paměti. To zajišťuje, že při vyhledávání IP adresy pro prvních několik uzlů v překladu adres bude vždy záznam v TLB .

Popularita

V srpnu 2020 přesáhl počet stránek obsluhovaných nginx podle Netcraftu 448 milionů , což z něj dělá první nejpopulárnější webový server na světě . Podíl mezi aktivními weby je 19,74 % , což staví nginx na druhé místo za webový server Apache [13] .

Podle W3Techs se nginx nejčastěji používá na vysoce vytížených webech [14] , řadí se na první místo z hlediska frekvence používání mezi 100 000 nejnavštěvovanějšími weby na světě – více než třetina z nich běží na nginx.

Podle ruského registrátora REG.RU je nginx nejoblíbenějším webovým serverem pro zóny domén .ru [15] , .rf [16] a .su [17] a obsluhuje více než polovinu každého segmentu.

NGINX je nejpopulárnější webový server v Rusku s podílem na trhu 65,90 % [18] .

Mezi známé projekty využívající nginx: Rambler [19] , Yandex [20] , VKontakte [21] , Facebook , Netflix [22] , Instagram [23] , Mail.ru , Habr [24] , LiveJournal [25] , Avito .ru [26] , Badoo [27] , Ukr.net , Begun , Wordpress.com , SourceForge.net [28] , Qiwi.com [29] , Groupon , Rutracker.org [Comm 3] , Pinterest [30] , Tumblr [31] , Superjob.ru [32] , HeadHunter [33] , 2GIS [34] , Orcatec a mnoho dalších [13] .

Společnost Nginx

Společnost Nginx Inc.
Typ soukromá společnost
Základna 2011
zrušeno 2016
Důvod zrušení převzala F5 Networks
Zakladatelé Igor Vladimirovič Sysoev
Umístění  Spojené státy :San Francisco,Kalifornie
Průmysl vývoj softwaru ( ISIC :) 6201
produkty Nginx, Nginx Plus
webová stránka nginx.com
 Mediální soubory na Wikimedia Commons

Za účelem vývoje komerčních produktů vytvořil Igor Sysoev v červenci 2011 Nginx [35] . Vývoj probíhá v kanceláři v Moskvě, pro prodej byla vytvořena americká "dcera" - Nginx Inc [36] . V únoru 2012 začala společnost poskytovat placené služby [37] , byly představeny tři balíčky technické podpory – Premium, Advanced a Essential, v rámci kterých předplatitelé získali služby instalace, ladění výkonu, konfigurace, údržby, pomoci při návrhu a finální optimalizace.

V prosinci 2011 společnost získala 3 miliony dolarů od skupiny investorů (vedoucí v kole byl BV Capital ; spoluinvestoři byli Runa Capital a rodinný fond MSD Capital Michaela Della [36] [38] ) .

V říjnu 2013 společnost získala dalších 10 milionů dolarů. Hlavním investorem byla společnost New Enterprise Associates ; spoluinvestory byly všechny fondy z předchozího kola a také Aaron Levy , šéf Box.com [39] .

9. prosince 2014 byla oznámena další investice ve výši 20 milionů dolarů. Kolo vedl fond rizikového kapitálu New Enterprise Associates za účasti společností Index Ventures , Runa Capital, E.ventures (dříve BV Capital ) a generálního ředitele Nginx Guse Robertsona [40] [41] [42] .

Dne 11. března 2019 F5 Networks oznámila [43] nákup Nginx za 670 milionů $, obchod byl dokončen 9. května 2019 [44] [45] .

Dne 12. prosince 2019 vyšlo najevo, že korporace Rambler (46,5 % vlastní Sberbank of Russia [46] ) si nárokovala exkluzivní práva na zdrojový kód nginx, některá média informovala o vyhledávání v kanceláři Nginx a trestní věci podle čl. 146 Trestního zákoníku Ruské federace (Porušování autorských práv a práv s nimi souvisejících) [47] [48] [49] [50] . Dne 18. května 2020 byl případ zamítnut na základě ustanovení 1 části 1 článku 24 trestního řádu Ruské federace (nepřítomnost trestného činu) [51] [52] [53] .

18. ledna 2022 bylo oznámeno, že Igor Sysoev opouští Nginx a F5 [54] .

Viz také

Poznámky

Komentáře
  1. Písmeno en:x se v angličtině nazývá ex /ˈɛks/
  2. FreeBSD 1.0, 1993. Kód funkce send_data()od src/libexec/ftpd/ftpd.c.
  3. Záložka "Net" z Firebugu
Prameny
  1. http://nginx.org/ru/CHANGES.ru
  2. nginx-1.23.2 – 2022.
  3. Dounin M. nginx-1.22.1 – 2022.
  4. Vydání 1.23.1 – 2022.
  5. Projekt nginx Open Source na Open Hub: Stránka jazyků - 2006.
  6. 1 2 Modul ngx_http_ssl_module 
  7. https://nginx.org/LICENSE
  8. Projekt nginx Open Source na Open Hub: Stránka licencí - 2006.
  9. Přednáška "Komparativní analýza architektur serverových internetových aplikací pro vysoké zatížení", přednášející: Igor Sysoev Archivováno 24. března 2018 na Wayback Machine .
  10. https://nginx.org/ru/docs/windows.html Archivováno 17. ledna 2020 na Wayback Machine nginx pro Windows
  11. Na http://sysoev.ru/nginx/ Archivní kopii ze 7. ledna 2006 na Wayback Machine si můžete přečíst: „Začal jsem vyvíjet nginx na jaře 2002…“
  12. Zpráva byla archivována 2. dubna 2015 na Wayback Machine od Gleba Smirnova (glebius@freebsd.org), vývojáře nginx a FreeBSD , na konferenci ruBSD 2014 dne 13. prosince 2014.
  13. 1 2. prosince 2019 Průzkum webového serveru archivován 14. prosince 2019 na Wayback Machine 
  14. Využití webových serverů rozdělených podle hodnocení Archivováno 5. února 2013.  (Angličtina)
  15. Webové servery zóny .RU . Získáno 6. února 2014. Archivováno z originálu 9. února 2014.
  16. Webové servery .RF zóny . Získáno 6. března 2014. Archivováno z originálu dne 2. března 2014.
  17. Webové servery zóny .SU . Získáno 6. března 2014. Archivováno z originálu dne 2. března 2014.
  18. Statistiky ruského internetu . runfo.ru Staženo 17. 5. 2017. Archivováno z originálu 17. 2. 2017.
  19. Webové technologie používané Rambler.ru  (anglicky)
  20. Webové technologie používané Yandex.ru  (anglicky)
  21. ↑ Webové technologie používané Vk.com 
  22. Netflix - Software Appliance . Získáno 14. února 2018. Archivováno z originálu 16. února 2018.
  23. Webové technologie používané  Instagram.com
  24. Webové technologie používané Habrahabr.ru  (anglicky)
  25. Webové technologie používané  Livejournal.com
  26. Webové technologie používané Avito.ru  (anglicky)
  27. ↑ Webové technologie používané Badoo.com 
  28. GET -ed http://sourceforge.net Archivováno 8. ledna 2011 na Wayback Machine | Server grep
  29. Webové technologie používané Qiwi.com . w3techs.com. Datum přístupu: 20. května 2016.
  30. Webové technologie používané  Pinterest.com
  31. ↑ Webové technologie používané Tumblr.com 
  32. Webové technologie používané Superjob.ru  (anglicky)
  33. ↑ Webové technologie používané Hh.ru 
  34. Webové technologie používané 2gis.ru  (anglicky)
  35. Zakladatelé Nginx: Nikdo by neměl vědět o našem produktu . Vědomosti (17. března 2019). Staženo 14. prosince 2019. Archivováno z originálu 14. prosince 2019.
  36. 1 2 Anastasia Golitsyna. Nginx získává  prostředky ve výši 3 milionů $ . Vědomosti (11. října 2011). Získáno 19. října 2014. Archivováno z originálu 17. května 2013.
  37. NGINX začíná nabízet placené služby svým zákazníkům Archivováno 13. března 2012 na Wayback Machine 
  38. Natasha Starkell. Ruský Nginx získává 3 miliony dolarů od mezinárodních  investorů . Techcrunch (11. října 2011). Datum přístupu: 19. října 2014. Archivováno z originálu 27. října 2014.
  39. Frederick Lardinois. Nginx získává 10 milionů $ kolo série B pod vedením  NEA . Techcrunch (15. října 2013). Získáno 19. října 2014. Archivováno z originálu 20. října 2014.
  40. Maria Kolomychenko. Nginx vstoupil do třetího kola . Kommersant (9. prosince 2014). Získáno 9. prosince 2014. Archivováno z originálu 9. prosince 2014.
  41. Frederick Lardinois. Nginx získává 20 milionů dolarů série B1, aby podpořila mezinárodní  expanzi . Techcrunch (9. prosince 2014). Datum přístupu: 9. prosince 2014. Archivováno z originálu 10. prosince 2014.
  42. Jordánsko listopadu. Nginx dostane 20 milionů dolarů, protože webový server s otevřeným zdrojovým kódem je jen  začátek . Venture Beat (9. prosince 2014). Datum přístupu: 9. prosince 2014. Archivováno z originálu 10. prosince 2014.
  43. Formulář 8-K . Staženo 15. prosince 2019. Archivováno z originálu 15. prosince 2019.
  44. F5 Networks – F5 dokončuje akvizici NGINX . Staženo 15. prosince 2019. Archivováno z originálu 15. prosince 2019.
  45. NGINX je nyní oficiálně součástí F5 - NGINX . Staženo 15. prosince 2019. Archivováno z originálu 12. prosince 2019.
  46. Sberbank uzavřela dohodu o koupi 46,5 % Rambler Group . RBC. Staženo 14. prosince 2019. Archivováno z originálu 12. prosince 2019.
  47. Rambler tvrdí Nginx . Kommersant . Získáno 12. prosince 2019. Archivováno z originálu 11. listopadu 2020.
  48. Vyšetřovací akce probíhaly v kanceláři IT společnosti Nginx . Rádio Liberty (12. prosince 2019). Staženo 12. prosince 2019. Archivováno z originálu 12. prosince 2019.
  49. Hledání v kanceláři pro spuštění Nginx, zakladatelé zadrženi. Případ iniciovala společnost Alexandra Mamuta . Zvonek (12. prosince 2019). Staženo 12. prosince 2019. Archivováno z originálu 12. prosince 2019.
  50. Cimpanu, Catalin Ruská policie provedla razii v kanceláři NGINX v Moskvě  . ZDNet (12. prosince 2019). Staženo 12. prosince 2019. Archivováno z originálu 12. prosince 2019.
  51. MIA uzavírá případ proti zakladatelům Nginx . RIA Novosti (7. července 2020). Získáno 31. prosince 2021. Archivováno z originálu dne 11. června 2021.
  52. Ministerstvo vnitra potvrdilo ukončení trestního řízení o právech na Nginx . Interfax (7. července 2020). Získáno 31. prosince 2021. Archivováno z originálu 10. května 2022.
  53. Ministerstvo vnitra oznámilo ukončení případu o právech na Nginx . RBC (22. června 2020). Získáno 31. prosince 2021. Archivováno z originálu dne 7. listopadu 2021.
  54. Whiteley, Rob . Udělejte Svidaniya, Igore, a děkuji vám za NGINX  , NGINX (  18. ledna 2022). Archivováno z originálu 19. ledna 2022. Získáno 19. ledna 2022.  "dnes oznamujeme, že se Igor rozhodl ustoupit od NGINX a F5, aby mohl trávit více času se svými přáteli a rodinou a věnovat se osobním projektům".

Odkazy