Nginx
nginx (engine x) — вільний вебсервер і проксі-сервер. Є версії для сімейства Unix-подібних операційних систем (FreeBSD, GNU/Linux, Solaris, Mac OS X) та Microsoft Windows. Розробляється Ігорем Сисоєвим з 2002-го року для компанії Rambler і постійно вдосконалюється. Восени 2004 року вийшов перший публічно доступний реліз. 3 2011 року розробкою програми опікується заснована Ігорем Сисоєвим компанія Nginx Inc., яка розвиває вільну та комерційні версії продукту.[2][3] 11 березня 2019 року NGINX купує компанія F5 Networks за 670 мільйонів доларів.[4][5] Основні функціїHTTP-сервер
IMAP/POP3-проксі сервер
ПопулярністьЗгідно з квітневим 2012 року звітом[6] компанії Netcraft nginx використовується на 12.76% всіх активних сайтів і на 10.09% з мільйона найвідвідуваніших сайтів у світі. За рік до того nginx використовувався на 8.68% всіх активних сайтів і 6.52% популярних сайтів. За рік nginx переступив десятивідсоткову межу і витіснив IIS на третє місце в рейтингу популярності активних сайтів. Звіт налічує близько 23.4 млн хостів під управлінням nginx. За даними W3Techs[7] на квітень 2012 11% з мільйона найвідвідуваніших сайтів у світі використовують nginx, тоді як у квітні 2011 року цей показник становив 6.8%. В РФ nginx використовується на 58.2% найбільш відвідуваних сайтів (в 2011 — 46.9%). Nginx використовується для 68.87% всіх українських доменів[8]. Архітектура і масштабованістьВ 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-адрес географічному регіону, представлена у вигляді Radix tree (стиснуте префіксне дерево або стиснений бор[що це?]) в оперативній пам'яті. nginx попередньо розподіляє перші кілька рівнів дерева, таким чином, щоб вони займали рівно 1 сторінку пам'яті. Це гарантує, що при пошуку IP-адреси для перших декількох вузлів при трансляції адреси завжди знайдеться запис у буфері асоціативної трансляції (TLB). Див. такожВиноски
Посилання |
Portal di Ensiklopedia Dunia