nginx (engine x) — вільний вебсервер і проксі-сервер. Є версії для сімейства Unix-подібних операційних систем (FreeBSD, (GNU/Linux), Solaris, Mac OS X) та Microsoft Windows.
Тип | Вебсервер, проксі-сервер |
---|---|
Автор | Ігор Сисоєв |
Розробники | NGINX, Inc. |
Стабільний випуск | 1.15.3 (28 серпня 2018 ) |
Нестабільний випуск | 1.14.0 (17 квітня 2018 ) |
Операційна система | Linux, Unix, Windows, Mac OS X |
Мова програмування | C[1] |
Ліцензія | BSD |
Репозиторій | https://hg.nginx.org/nginx, https://github.com/nginx/nginx |
Вебсайт | nginx.org |
|
Розробляється Ігорем Сисоєвим з 2002-го року для компанії Rambler і постійно вдосконалюється. Восени 2004 року вийшов перший публічно доступний реліз.
3 2011 року розробкою програми опікується заснована Ігорем Сисоєвим компанія Nginx Inc., яка розвиває вільну та комерційні версії продукту.
11 березня 2019 року NGINX купує компанія F5 Networks за 670 мільйонів доларів.
Основні функції
HTTP-сервер
- обслуговування статичних запитів, індексних файлів, автоматичне створення списку файлів, кеш дескрипторів відкритих файлів
- акселероване проксіювання з підтримкою кешування
- акселерована підтримка FastCGI і memcached серверів, простий розподіл навантаження і відмовостійкість
- модульність, фільтри, gzip, byte-ranges (докачка), chunked відповіді, HTTP-аутентифікація, SSI-фільтр
- вкладені запити на одній сторінці виконуються паралельно
- підтримка SSL
- експериментальна підтримка вбудованого Perl
- експериментальна підтримка (HTTP/2)
IMAP/POP3-проксі сервер
Популярність
Згідно з квітневим 2012 року звітом компанії nginx використовується на 12.76% всіх активних сайтів і на 10.09% з мільйона найвідвідуваніших сайтів у світі. За рік до того nginx використовувався на 8.68% всіх активних сайтів і 6.52% популярних сайтів. За рік nginx переступив десятивідсоткову межу і витіснив IIS на третє місце в рейтингу популярності активних сайтів. Звіт налічує близько 23.4 млн хостів під управлінням nginx.
За даними W3Techs на квітень 2012 11% з мільйона найвідвідуваніших сайтів у світі використовують nginx, тоді як у квітні 2011 року цей показник становив 6.8%. В РФ nginx використовується на 58.2% найбільш відвідуваних сайтів (в 2011 — 46.9%).
Nginx використовується для 68.87% всіх українських доменів.
Архітектура і масштабованість
В nginx робочі процеси обслуговують одночасно безліч з'єднань, мультиплексуючи їх викликами операційної системи select, epoll (Linux) і kqueue (FreeBSD). Робочі процеси виконують цикл обробки подій від дескрипторів (див. подієво-орієнтоване програмування). Отримані від клієнта дані розбираються з допомогою скінченного автомата. Розібраний запит послідовно обробляється ланцюжком модулів, що задається конфігурацією. Відповідь клієнту формується в буферах, які зберігають дані або в пам'яті, або вказують на відрізок файлу. Буфери об'єднуються в ланцюжки, що визначають послідовність, в якій дані будуть передані клієнтові. Якщо операційна система підтримує ефективні операції вводу-виводу, такі як writev і sendfile, то nginx застосовує їх при нагоді.
Віртуальні сервери
Конфігурація HTTP-сервера nginx дозволяє визначати віртуальні вебсервери (директива server), які фізично знаходяться й обслуговуються одним сервером. Віртуальні сервери поділяються на локації (location). Для віртуального сервера можливо задати адреси і порти, на яких будуть прийматися з'єднання, а також імена, які можуть включати * для позначення довільній послідовності в перший і останній частині, або задаватися регулярним виразом.
Локації можуть задаватися точним URI, частиною URI, або регулярним виразом. location'и можуть бути налаштовані для обслуговування запитів зі статичного файлу, проксування на http, fastcgi чи memcached сервер.
Керування пам'яттю
Для ефективного керування пам'яттю nginx використовує пули — це послідовність попередньо виділених блоків динамічної пам'яті. Довжина блоку змінюється в межах від 1 до 16 кілобайт. Спочатку пулу надається лише один блок. Блок розподіляється на зайняту область й незайняту. Виділення дрібних об'єктів виконується шляхом просування покажчика на незайняту область з урахуванням вирівнювання. Якщо незайнятої області в усіх блоках бракує для виділення нового об'єкта, то виділяється новий блок. Якщо розмір виділеного об'єкта перевищує значення константи NGX_MAX_ALLOC_FROM_POOL або довжину блоку, то він повністю виділяється з купи.
Таким чином, дрібні об'єкти виділяються дуже швидко та мають накладні витрати тільки на вирівнювання.
Географічна класифікація клієнтів
nginx містить модуль географічної класифікації клієнтів за IP-адресою. У його основу входить база даних відповідності IP-адрес географічному регіону, представлена у вигляді (стиснуте префіксне дерево або стиснений бор[]) в оперативній пам'яті. nginx попередньо розподіляє перші кілька рівнів дерева, таким чином, щоб вони займали рівно 1 сторінку пам'яті. Це гарантує, що при пошуку IP-адреси для перших декількох вузлів при трансляції адреси завжди знайдеться запис у буфері асоціативної трансляції (TLB).
Див. також
Виноски
- The nginx Open Source Project on Open Hub: Languages Page — 2006.
- . Архів оригіналу за 31 серпня 2013. Процитовано 28 квітня 2013.
- Подробности о развитии Nginx в руках коммерческой компании [ 13 листопада 2012 у Wayback Machine.] // opennet.ru
- . Хабр. Архів оригіналу за 11 березня 2019. Процитовано 12 березня 2019.
- . F5 Networks. Архів оригіналу за 11 березня 2019. Процитовано 11 березня 2019.
- . Архів оригіналу за 21 квітня 2012. Процитовано 25 квітня 2012.
- Usage of web servers for websites
- . www.ukralio.com (укр.). Архів оригіналу за 17 лютого 2017. Процитовано 16 лютого 2017.
Посилання
- Офіційний сайт
- Документація
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
nginx engine x vilnij vebserver i proksi server Ye versiyi dlya simejstva Unix podibnih operacijnih sistem FreeBSD GNU Linux Solaris Mac OS X ta Microsoft Windows nginxTipVebserver proksi serverAvtorIgor SisoyevRozrobnikiNGINX Inc Stabilnij vipusk1 15 3 28 serpnya 2018 5 rokiv tomu 2018 08 28 Nestabilnij vipusk1 14 0 17 kvitnya 2018 6 rokiv tomu 2018 04 17 Operacijna sistemaLinux Unix Windows Mac OS XMova programuvannyaC 1 LicenziyaBSDRepozitorijhttps hg nginx org nginx https github com nginx nginxVebsajtnginx org Mediafajli u Vikishovishi Rozroblyayetsya Igorem Sisoyevim z 2002 go roku dlya kompaniyi Rambler i postijno vdoskonalyuyetsya Voseni 2004 roku vijshov pershij publichno dostupnij reliz 3 2011 roku rozrobkoyu programi opikuyetsya zasnovana Igorem Sisoyevim kompaniya Nginx Inc yaka rozvivaye vilnu ta komercijni versiyi produktu 11 bereznya 2019 roku NGINX kupuye kompaniya F5 Networks za 670 miljoniv dolariv Osnovni funkciyiHTTP server obslugovuvannya statichnih zapitiv indeksnih fajliv avtomatichne stvorennya spisku fajliv kesh deskriptoriv vidkritih fajliv akselerovane proksiyuvannya z pidtrimkoyu keshuvannya akselerovana pidtrimka FastCGI i memcached serveriv prostij rozpodil navantazhennya i vidmovostijkist modulnist filtri gzip byte ranges dokachka chunked vidpovidi HTTP autentifikaciya SSI filtr vkladeni zapiti na odnij storinci vikonuyutsya paralelno pidtrimka SSL eksperimentalna pidtrimka vbudovanogo Perl eksperimentalna pidtrimka HTTP 2 IMAP POP3 proksi server perenapravlennya koristuvacha na IMAP POP3 bekend z vikoristannya zovnishnogo HTTP servera autentifikaciyi prosta autentifikaciya LOGIN USER PASS pidtrimka SSL i StartTLSPopulyarnistZgidno z kvitnevim 2012 roku zvitom kompaniyi nginx vikoristovuyetsya na 12 76 vsih aktivnih sajtiv i na 10 09 z miljona najvidviduvanishih sajtiv u sviti Za rik do togo nginx vikoristovuvavsya na 8 68 vsih aktivnih sajtiv i 6 52 populyarnih sajtiv Za rik nginx perestupiv desyatividsotkovu mezhu i vitisniv IIS na tretye misce v rejtingu populyarnosti aktivnih sajtiv Zvit nalichuye blizko 23 4 mln hostiv pid upravlinnyam nginx Za danimi W3Techs na kviten 2012 11 z miljona najvidviduvanishih sajtiv u sviti vikoristovuyut nginx todi yak u kvitni 2011 roku cej pokaznik stanoviv 6 8 V RF nginx vikoristovuyetsya na 58 2 najbilsh vidviduvanih sajtiv v 2011 46 9 Nginx vikoristovuyetsya dlya 68 87 vsih ukrayinskih domeniv Arhitektura i masshtabovanistV nginx robochi procesi obslugovuyut odnochasno bezlich z yednan multipleksuyuchi yih viklikami operacijnoyi sistemi select epoll Linux i kqueue FreeBSD Robochi procesi vikonuyut cikl obrobki podij vid deskriptoriv div podiyevo oriyentovane programuvannya Otrimani vid kliyenta dani rozbirayutsya z dopomogoyu skinchennogo avtomata Rozibranij zapit poslidovno obroblyayetsya lancyuzhkom moduliv sho zadayetsya konfiguraciyeyu Vidpovid kliyentu formuyetsya v buferah yaki zberigayut dani abo v pam yati abo vkazuyut na vidrizok fajlu Buferi ob yednuyutsya v lancyuzhki sho viznachayut poslidovnist v yakij dani budut peredani kliyentovi Yaksho operacijna sistema pidtrimuye efektivni operaciyi vvodu vivodu taki yak writev i sendfile to nginx zastosovuye yih pri nagodi Virtualni serveri Konfiguraciya HTTP servera nginx dozvolyaye viznachati virtualni vebserveri direktiva server yaki fizichno znahodyatsya j obslugovuyutsya odnim serverom Virtualni serveri podilyayutsya na lokaciyi location Dlya virtualnogo servera mozhlivo zadati adresi i porti na yakih budut prijmatisya z yednannya a takozh imena yaki mozhut vklyuchati dlya poznachennya dovilnij poslidovnosti v pershij i ostannij chastini abo zadavatisya regulyarnim virazom Lokaciyi mozhut zadavatisya tochnim URI chastinoyu URI abo regulyarnim virazom location i mozhut buti nalashtovani dlya obslugovuvannya zapitiv zi statichnogo fajlu proksuvannya na http fastcgi chi memcached server Keruvannya pam yattyu Dlya efektivnogo keruvannya pam yattyu nginx vikoristovuye puli ce poslidovnist poperedno vidilenih blokiv dinamichnoyi pam yati Dovzhina bloku zminyuyetsya v mezhah vid 1 do 16 kilobajt Spochatku pulu nadayetsya lishe odin blok Blok rozpodilyayetsya na zajnyatu oblast j nezajnyatu Vidilennya dribnih ob yektiv vikonuyetsya shlyahom prosuvannya pokazhchika na nezajnyatu oblast z urahuvannyam virivnyuvannya Yaksho nezajnyatoyi oblasti v usih blokah brakuye dlya vidilennya novogo ob yekta to vidilyayetsya novij blok Yaksho rozmir vidilenogo ob yekta perevishuye znachennya konstanti NGX MAX ALLOC FROM POOL abo dovzhinu bloku to vin povnistyu vidilyayetsya z kupi Takim chinom dribni ob yekti vidilyayutsya duzhe shvidko ta mayut nakladni vitrati tilki na virivnyuvannya Geografichna klasifikaciya kliyentiv nginx mistit modul geografichnoyi klasifikaciyi kliyentiv za IP adresoyu U jogo osnovu vhodit baza danih vidpovidnosti IP adres geografichnomu regionu predstavlena u viglyadi stisnute prefiksne derevo abo stisnenij bor sho ce v operativnij pam yati nginx poperedno rozpodilyaye pershi kilka rivniv dereva takim chinom shob voni zajmali rivno 1 storinku pam yati Ce garantuye sho pri poshuku IP adresi dlya pershih dekilkoh vuzliv pri translyaciyi adresi zavzhdi znajdetsya zapis u buferi asociativnoyi translyaciyi TLB Div takozhApache HTTP Server lighttpdVinoskiThe nginx Open Source Project on Open Hub Languages Page 2006 d Track Q124688 Arhiv originalu za 31 serpnya 2013 Procitovano 28 kvitnya 2013 Podrobnosti o razvitii Nginx v rukah kommercheskoj kompanii 13 listopada 2012 u Wayback Machine opennet ru Habr Arhiv originalu za 11 bereznya 2019 Procitovano 12 bereznya 2019 F5 Networks Arhiv originalu za 11 bereznya 2019 Procitovano 11 bereznya 2019 Arhiv originalu za 21 kvitnya 2012 Procitovano 25 kvitnya 2012 Usage of web servers for websites www ukralio com ukr Arhiv originalu za 17 lyutogo 2017 Procitovano 16 lyutogo 2017 PosilannyaOficijnij sajt Dokumentaciya