Nginx

Nginx

nginx logo
Type webserver og proxyserver
Forfatter Igor Vladimirovich Sysoev
Udvikler NGINX Inc. [d] ogIgor Vladimirovich Sysoev
Skrevet i C [5]
Operativ system Unix-lignende operativsystem og Microsoft Windows
Første udgave 4. oktober 2004 [1]
nyeste version
Test version
Læsbare filformater PEM-kodet certifikat [d] [6], PEM-kodet RSA privat nøgle [d] [6]og Nginx-steder-tilgængelige [d]
Licens 2-klausul BSD-licens [7] [8]
Internet side nginx.org
 Mediefiler på Wikimedia Commons

Nginx (e ngin e x  - på russisk udtales det som enginx eller engin-x [9][Comm 1] ) er en webserver og mail -proxyserver, der kører på Unix -lignende operativsystemer (testet montering og drift på FreeBSD , OpenBSD , Linux , Solaris , macOS , AIX og HP-UX ). Fra og med version 0.7.52 er en eksperimentel binær build til Microsoft Windows [10] dukket op .

Igor Sysoev startede udviklingen i 2002 [11] . I efteråret 2004 udkom den første offentligt tilgængelige udgivelse. Siden juli 2011 har arbejdet med nginx været i gang i Nginx-virksomheden.

Hovedfunktioner

Nginx er af producenten positioneret som en enkel, hurtig og pålidelig server, der ikke er overbelastet med funktioner.

Brug af nginx er bedst til statiske websteder og som en omvendt proxy for dynamiske websteder .

HTTP-server

SMTP/IMAP/POP3-proxyserver

Arkitektur

I nginx betjener arbejdsprocesser mange forbindelser på samme tid og multiplekser dem med select, epoll ( Linux ) og kqueue ( FreeBSD ) operativsystemkald. Arbejdsprocesser udfører en hændelsesløkke fra håndtag (se hændelsesdrevet programmering ). De data, der modtages fra klienten, analyseres ved hjælp af en tilstandsmaskine . Den parsede anmodning behandles sekventielt af kæden af ​​moduler specificeret af konfigurationen. Responsen til klienten dannes i buffere , der lagrer data enten i hukommelsen eller peger på et filsegment. Buffere kombineres i kæder, der bestemmer rækkefølgen, hvori data vil blive overført til klienten. Hvis operativsystemet understøtter effektive I/O-operationer såsom writev og sendfile , så bruger nginx dem, når det er muligt.

Algoritmen for HTTP-serveren er som følger [12] :

  1. få næste håndtag fra kevent(2) ;
  2. læs data fra fil og skriv til socket ved hjælp af enten write(2) / read(2) som denne [Comm 2] :
mens ( ( cnt = læst ( read_file_descriptor , buffer , blokstørrelse ), skrive ( socket_file_descriptor , buffer , tælle ) == cnt ) ) byte_count += count ; enten ved at bruge sendfile(2) systemkaldet , som gør det samme som koden ovenfor, men i kernerummet;
  1. gå til trin 1.

nginx HTTP-serverkonfigurationen er opdelt i virtuelle servere ("server"-direktivet). Virtuelle servere er opdelt i lokationer ("placering"). For en virtuel server er det muligt at indstille adresser og porte, som forbindelser vil blive accepteret på, samt navne, der kan indeholde "*" for at angive en vilkårlig sekvens i den første og sidste del, eller være specificeret af et regulært udtryk.

placeringer kan angives af den nøjagtige URI , en del af URI'en eller ved et regulært udtryk . Placeringer kan konfigureres til at betjene anmodninger fra en statisk fil, proxyer til en fastcgi/memcached server.

Til effektiv hukommelsesstyring bruger nginx puljer . En pulje  er en sekvens af præ-allokerede blokke af dynamisk hukommelse. Bloklængden varierer fra 1 til 16 kilobyte. I første omgang er der kun afsat én blok til puljen. Blokken er opdelt i et beboet område og et ubeboet område. Udvælgelsen af ​​små objekter udføres ved at flytte markøren til et ubesat område under hensyntagen til justeringen. Hvis det ledige område i alle blokke ikke er nok til at allokere et nyt objekt, tildeles en ny blok. Hvis størrelsen af ​​det allokerede objekt overstiger værdien af ​​NGX_MAX_ALLOC_FROM_POOL konstanten eller længden af ​​blokken, så er den fuldstændig allokeret fra heapen.

Små objekter allokeres således meget hurtigt og har kun overhead for justering .

nginx indeholder et modul til geografisk klassificering af klienter efter IP-adresse . Det er baseret på en database med korrespondance af IP-adresser til et geografisk område, repræsenteret som et radix-træ (komprimeret præfikstræ eller komprimeret skov) i RAM . nginx forudallokerer de første par niveauer af træet, så de fylder præcis 1 sides hukommelse. Dette sikrer, at når du slår en IP-adresse op for de første par noder i adresseoversættelse, vil der altid være en indtastning i TLB'en .

Popularitet

Fra august 2020 overstiger antallet af websteder, der betjenes af nginx , 448 millioner , ifølge Netcraft , hvilket gør det til verdens første mest populære webserver . Andelen blandt aktive sider er 19,74% , hvilket placerer nginx på andenpladsen efter Apache -webserveren [13] .

Ifølge W3Techs er nginx mest almindeligt brugt på websteder med høj belastning [14] , og rangerer først med hensyn til hyppigheden af ​​brug blandt de 100.000 mest besøgte websteder i verden - mere end en tredjedel af dem kører på nginx.

Ifølge den russiske registrator REG.RU er nginx den mest populære webserver for domænezonerne .ru [15] , .rf [16] og .su [17] og betjener mere end halvdelen af ​​hvert segment.

NGINX er den mest populære webserver i Rusland med en markedsandel på 65,90 % [18] .

Blandt de velkendte projekter, der bruger 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 og mange andre [13] .

Nginx-virksomhed

Nginx Inc.
Type privat virksomhed
Grundlag 2011
afskaffet 2016
Årsag til afskaffelse overtaget af F5 Networks
Grundlæggere Igor Vladimirovich Sysoev
Beliggenhed  USA :San Francisco,Californien
Industri softwareudvikling ( ISIC :) 6201 _
Produkter Nginx, Nginx Plus
Internet side nginx.com
 Mediefiler på Wikimedia Commons

For at udvikle kommercielle produkter skabte Igor Sysoev Nginx i juli 2011 [35] . Udviklingen udføres på et kontor beliggende i Moskva, en amerikansk "datter" - Nginx Inc [36] blev skabt til salg . I februar 2012 begyndte virksomheden at levere betalte tjenester [37] , tre tekniske supportpakker blev introduceret - Premium, Advanced og Essential, inden for hvilke abonnenter modtog installation, ydelsesjustering, konfiguration, vedligeholdelse, designassistance og endelige optimeringstjenester.

I december 2011 rejste virksomheden 3 millioner dollars fra en pulje af investorer (førende i runden var BV Capital ; medinvestorer var Runa Capital og Michael Dells MSD Capital - familiefond [36] [38] ) .

I oktober 2013 rejste virksomheden yderligere 10 millioner dollars. Den ledende investor var New Enterprise Associates ; medinvestorer var alle midlerne fra den foregående runde, såvel som Aaron Levy , leder af Box.com [39] .

Den 9. december 2014 blev der annonceret en yderligere investering på 20 millioner dollars. Runden blev ledet af New Enterprise Associates venturekapitalfonden med deltagelse af Index Ventures , Runa Capital, E.ventures (tidligere BV Capital ) og Nginx CEO Gus Robertson [40] [41] [42] .

Den 11. marts 2019 annoncerede F5 Networks [43] købet af Nginx for $670 millioner, handlen blev afsluttet den 9. maj 2019 [44] [45] .

Den 12. december 2019 blev det kendt, at Rambler-selskabet (hvoraf 46,5 % ejes af Sberbank of Russia [46] ) hævdede eksklusive rettigheder til nginx-kildekoden, nogle medier rapporterede om en søgning på Nginx-kontoret og en straffesag efter art. 146 i Den Russiske Føderations straffelov (Krænkelse af ophavsret og beslægtede rettigheder) [47] [48] [49] [50] . Den 18. maj 2020 blev sagen afvist i henhold til paragraf 1 i del 1 i artikel 24 i Den Russiske Føderations strafferetsplejelov (fravær af en forbrydelse) [51] [52] [53] .

Den 18. januar 2022 blev det annonceret, at Igor Sysoev forlod Nginx og F5 [54] .

Se også

Noter

Kommentarer
  1. Bogstavet en:x på engelsk hedder ex /ˈɛks/
  2. FreeBSD 1.0, 1993. Funktionskode send_data()fra src/libexec/ftpd/ftpd.c.
  3. Fanen "Net" fra Firebug
Kilder
  1. http://nginx.org/ru/CHANGES.ru
  2. nginx-1.23.2 - 2022.
  3. Dounin M. nginx-1.22.1 - 2022.
  4. Release release-1.23.1 - 2022.
  5. nginx Open Source-projektet på Open Hub: Languages-side - 2006.
  6. 1 2 Modul ngx_http_ssl_module 
  7. https://nginx.org/LICENSE
  8. nginx Open Source-projektet på Open Hub: Licensside - 2006.
  9. Foredrag "Komparativ analyse af arkitekturer af serverinternetapplikationer til høje belastninger", foredragsholder: Igor Sysoev Arkiveret 24. marts 2018 på Wayback Machine .
  10. https://nginx.org/ru/docs/windows.html Arkiveret 17. januar 2020 på Wayback Machine nginx til Windows
  11. http://sysoev.ru/nginx/ Arkivkopi dateret 7. januar 2006 på Wayback Machine kan du læse: "Jeg begyndte at udvikle nginx i foråret 2002..."
  12. Rapport arkiveret 2. april 2015 på Wayback Machine af Gleb Smirnov ([email protected]), nginx og FreeBSD -udvikler , på ruBSD 2014-konferencen den 13. december 2014.
  13. 1 2. december 2019 webserverundersøgelse arkiveret 14. december 2019 på Wayback - maskinen 
  14. Brug af webservere opdelt efter rangering Arkiveret 5. februar 2013.  (Engelsk)
  15. Webservere i .RU-zonen . Hentet 6. februar 2014. Arkiveret fra originalen 9. februar 2014.
  16. Webservere i .RF-zonen . Hentet 6. marts 2014. Arkiveret fra originalen 2. marts 2014.
  17. Webservere i .SU-zonen . Hentet 6. marts 2014. Arkiveret fra originalen 2. marts 2014.
  18. Statistik over det russiske internet . runfo.ru Hentet 17. maj 2017. Arkiveret fra originalen 17. februar 2017.
  19. Webteknologier brugt af Rambler.ru  (engelsk)
  20. Webteknologier brugt af Yandex.ru  (engelsk)
  21. ↑ Webteknologier brugt af Vk.com 
  22. Netflix - Appliance Software . Hentet 14. februar 2018. Arkiveret fra originalen 16. februar 2018.
  23. Webteknologier brugt af  Instagram.com
  24. Webteknologier brugt af Habrahabr.ru  (engelsk)
  25. ↑ Webteknologier brugt af  Livejournal.com
  26. Webteknologier brugt af Avito.ru  (engelsk)
  27. ↑ Webteknologier brugt af Badoo.com 
  28. GET -ed http://sourceforge.net Arkiveret 8. januar 2011 på Wayback Machine | grep server
  29. Webteknologier brugt af Qiwi.com . w3techs.com. Dato for adgang: 20. maj 2016.
  30. Webteknologier brugt af  Pinterest.com
  31. ↑ Webteknologier brugt af Tumblr.com 
  32. Webteknologier brugt af Superjob.ru  (engelsk)
  33. ↑ Webteknologier brugt af Hh.ru 
  34. Webteknologier brugt af 2gis.ru  (engelsk)
  35. Grundlæggerne af Nginx: Ingen burde kende til vores produkt . Vedomosti (17. marts 2019). Hentet 14. december 2019. Arkiveret fra originalen 14. december 2019.
  36. 1 2 Anastasia Golitsyna. Nginx modtager $3M i  midler . Vedomosti (11. oktober 2011). Hentet 19. oktober 2014. Arkiveret fra originalen 17. maj 2013.
  37. NGINX begynder at tilbyde betalte tjenester til sine kunder Arkiveret 13. marts 2012 på Wayback Machine 
  38. Natasha Starkell. Russisk Nginx hæver $3 millioner fra internationale  investorer . Techcrunch (11. oktober 2011). Dato for adgang: 19. oktober 2014. Arkiveret fra originalen 27. oktober 2014.
  39. Frederick Lardinois. Nginx hæver $10 mio. serie B-runde ledet af  NEA . Techcrunch (15. oktober 2013). Hentet 19. oktober 2014. Arkiveret fra originalen 20. oktober 2014.
  40. Maria Kolomychenko. Nginx er gået ind i tredje runde . Kommersant (9. december 2014). Hentet 9. december 2014. Arkiveret fra originalen 9. december 2014.
  41. Frederick Lardinois. Nginx hæver $20M Serie B1-runde for at drive international  udvidelse . Techcrunch (9. december 2014). Dato for adgang: 9. december 2014. Arkiveret fra originalen 10. december 2014.
  42. Jordan nov. Nginx får $20 millioner, fordi en open source-webserver kun er  begyndelsen . Venture Beat (9. december 2014). Dato for adgang: 9. december 2014. Arkiveret fra originalen 10. december 2014.
  43. Form 8-K . Hentet 15. december 2019. Arkiveret fra originalen 15. december 2019.
  44. F5 Networks - F5 fuldfører erhvervelsen af ​​NGINX . Hentet 15. december 2019. Arkiveret fra originalen 15. december 2019.
  45. NGINX er nu officielt en del af F5-NGINX . Hentet 15. december 2019. Arkiveret fra originalen 12. december 2019.
  46. Sberbank lukkede aftalen om at købe 46,5% af Rambler Group . RBC. Hentet 14. december 2019. Arkiveret fra originalen 12. december 2019.
  47. Rambler hævder Nginx . Kommersant . Hentet 12. december 2019. Arkiveret fra originalen 11. november 2020.
  48. Efterforskningshandlinger fandt sted på Nginx IT-firmaets kontor . Radio Liberty (12. december 2019). Hentet 12. december 2019. Arkiveret fra originalen 12. december 2019.
  49. Søgninger i Nginx opstartskontor, grundlæggere tilbageholdt. Sagen er indledt af Alexander Mamuts firma . Klokken (12. december 2019). Hentet 12. december 2019. Arkiveret fra originalen 12. december 2019.
  50. Cimpanu, Catalinsk russisk politi angreb NGINX Moskva-kontor  . ZDNet (12. december 2019). Hentet 12. december 2019. Arkiveret fra originalen 12. december 2019.
  51. MIA afslutter sag mod Nginx-grundlæggere . RIA Novosti (7. juli 2020). Hentet 31. december 2021. Arkiveret fra originalen 11. juni 2021.
  52. Indenrigsministeriet bekræftede afslutningen af ​​straffesagen om rettighederne til Nginx . Interfax (7. juli 2020). Hentet 31. december 2021. Arkiveret fra originalen 10. maj 2022.
  53. Indenrigsministeriet meddelte afslutningen af ​​sagen om rettighederne til Nginx . RBC (22. juni 2020). Hentet 31. december 2021. Arkiveret fra originalen 7. november 2021.
  54. Whiteley, Rob . Gør Svidaniya, Igor, og tak for NGINX  , NGINX (  18. januar 2022). Arkiveret fra originalen den 19. januar 2022. Hentet 19. januar 2022.  "vi meddeler i dag, at Igor har valgt at træde tilbage fra NGINX og F5 for at bruge mere tid sammen med sine venner og familie og for at forfølge personlige projekter".

Links