Наша взаимовыгодная связь https://banwar.org/
nginx (e ngin e x - англ. Engine X; по-російськи вимовляється як енгінкс [7] або енжін-ікс [8] ) - веб-сервер і поштовий проксі-сервер , Що працює на Unix -подібних операційних системах (тестувалася збірка і робота на FreeBSD , OpenBSD , Linux , Solaris , Mac OS X , AIX і HP-UX ). Починаючи з версії 0.7.52 з'явилася експериментальна [9] бінарна збірка під Microsoft Windows .
Ігор Сисоєв почав розробку в 2002 році [10] . Восени 2004 року вийшов перший публічно доступна реліз. З липня 2011 робота над nginx триває в рамках компанії Nginx.
nginx позиціонується виробником як простий, швидкий і надійний сервер, не переобтяжений функціями.
Застосування nginx доцільно перш за все для статичних веб-сайтів і як зворотного проксі-сервера перед динамічними сайтами [ Джерело не вказано 2543 дня ].
HTTP-сервер [ правити | правити код ]
- обслуговування незмінних запитів, індексних файлів, автоматичне створення списку файлів, кеш дескрипторів відкритих файлів
- акселерірованное проксінг без кешування, простий розподіл навантаження і відмовостійкість
- підтримка кешування при акселерірованном проксінг і FastCGI
- акселерірованная підтримка FastCGI і memcached серверів, простий розподіл навантаження і відмовостійкість
- модульність, фільтри, в тому числі стиснення ( gzip ), Byte-ranges (докачка), chunked відповіді, HTTP- аутентифікація , SSI -фільтр
- кілька підзапитів на одній сторінці, оброблювані в SSI-фільтрі через проксі або FastCGI, виконуються паралельно
- підтримка SSL
- підтримка PSGI , WSGI
- експериментальна підтримка вбудованого Perl
SMTP / IMAP / POP3-проксі сервер [ правити | правити код ]
- перенаправлення користувача на SMTP / IMAP / POP3 -бекенд з використанням зовнішнього HTTP -сервера аутентифікації
- проста аутентифікація (LOGIN, USER / PASS)
- підтримка SSL і STARTTLS
У nginx робочі процеси обслуговують одночасно безліч з'єднань, мультіплексіруя їх викликами операційної системи select, epoll ( Linux ) І kqueue ( FreeBSD ). Робочі процеси виконують цикл обробки подій від дескрипторів (див. Подієво-орієнтоване програмування ). Отримані від клієнта дані розбираються за допомогою кінцевого автомата . Розібраний запит послідовно обробляється ланцюжком модулів, що задається конфігурацією. Відповідь клієнту формується в буферах , Які зберігають дані або в пам'яті , Або вказують на відрізок файлу. Буфери об'єднуються в ланцюжки, що визначають послідовність, в якій дані будуть передані клієнтові. Якщо операційна система підтримує ефективні операції введення-виведення, такі як writev і sendfile, то nginx застосовує їх якнайшвидше.
Алгоритм роботи HTTP сервера виглядає наступним чином [11] :
- отримати черговий дескриптор з kevent (2);
- прочитати дані з файлу і записати в socket , Використовуючи або write (2) / read (2), наприклад, так [12] :
while ((cnt = read (read_file_descriptor, buffer, block_size), write (socket_file_descriptor, buffer, count) == cnt)) byte_count + = count; або використовуючи системний виклик sendfile (2), що виконує ті ж дії, що наведений вище код, але в просторі ядра;
- перейти до кроку 1.
конфігурація HTTP-сервера nginx розділяється на віртуальні сервери (директива «server»). Віртуальні сервери поділяються на location'и ( «location»). Для віртуального сервера можна задати адреси і порти, на яких будуть прийматися з'єднання, а також імена, які можуть включати «*» для позначення довільній послідовності в першій і останній частині, або задаватися регулярним виразом.
location'и можуть задаватися точним URI , частиною URI , або регулярним виразом . location'и можуть бути налаштовані для обслуговування запитів з статичного файлу, проксінг на fastcgi / memcached сервер.
Для ефективного управління пам'яттю nginx використовує пули . Пул - це послідовність попередньо виділених блоків динамічної пам'яті. Довжина блоку варіюється від 1 до 16 кілобайт. Спочатку під пул виділяється тільки один блок. Блок розділяється на зайняту область та незайняту. Виділення дрібних об'єктів виконується шляхом просування покажчика на незайняту область з урахуванням вирівнювання. Якщо незайнятої області у всіх блоках не вистачає для виділення нового об'єкта, то виділяється новий блок. Якщо розмір виділяється об'єкта перевищує значення константи NGX_MAX_ALLOC_FROM_POOL або довжину блоку, то він повністю виділяється з купи.
Таким чином, дрібні об'єкти виділяються дуже швидко і мають накладні витрати тільки на вирівнювання .
nginx містить модуль географічної класифікації клієнтів по IP-адресою . В його основу входить база даних відповідності IP-адрес географічного регіону, представлена у вигляді radix tree (стислий префіксне дерево або стиснений ліс) в оперативної пам'яті . nginx попередньо розподіляє перші кілька рівнів дерева, таким чином, щоб вони займали рівно 1 сторінку пам'яті. Це гарантує, що при пошуку IP-адреси для перших декількох вузлів при трансляції адреси завжди знайдеться запис в TLB .
За даними Netcraft на лютий 2018 року, число сайтів, що обслуговуються nginx, перевищує 447 мільйонів, що робить його третім за популярністю веб-сервером в світі. Частка серед активних сайтів - 21,13%, що ставить nginx на друге місце після веб-сервера Apache [13] .
За даними W3Techs, nginx найбільш часто використовується на високонавантажених сайтах [14] , Займаючи перше місце за частотою використання серед 100 000 найбільш відвідуваних сайтів у світі - більше половини з них працює на nginx.
За даними російського реєстратора REG.RU , Nginx є найпопулярнішим веб-сервером доменних зон .ru [15] , .рф [16] і .su [17] , Обслуговуючи більше половини кожного сегмента.
NGINX - найпопулярніший веб-сервер в Росії з часткою ринку 65,90% [18] .
Серед відомих проектів, що використовують nginx: Рамблер [19] , Яндекс [20] , Mail.ru , Хабрахабр [21] , Живий Журнал [22] , Avito.ru [23] , Badoo [24] , Ukr.net , Begun , Wordpress.com , SourceForge.net [25] , ВКонтакте [26] , Qiwi.com [27] , Facebook , Groupon , Rutracker.org [28] , Netflix [29] , Instagram [30] , Pinterest [31] , Tumblr [32] , Superjob.ru [33] , HeadHunter [34] , 2ГІС [35] і багато інших [13] .
Для розробки комерційних продуктів Ігор Сисоєв створив в липні 2011 року компанію Nginx. Розробка ведеться в офісі, що знаходиться в Москві, для продажу створена американська «дочка» - Nginx Inc [36] . У лютому 2012 року компанія почала надавати комерційний сервіс для клієнтів [37] . Були введені три пакети технічної підтримки - Premium, Advanced і Essential. Ці пакети включають в себе установку, підвищення продуктивності, конфігурацію, супровід програмного забезпечення, реалізацію, сприяння в проектуванні і фінальної оптимізації.
У грудні 2011 року компанія залучила $ 3 мільйони від пулу інвесторів (в раунді лідирував фонд BV Capital [En] ; співінвесторами виступили фонди Runa Capital і сімейний фонд Майкла Делла MSD Capital [En] [36] [38] .
У жовтня 2013 компанія залучила ще $ 10 мільйонів. Провідним інвестором виступив фонд New Enterprise Associates [En] ; співінвесторами виступили всі фонди попереднього раунду, а також Аарон Леві , глава Box.com [39] .
9 грудня 2014 було оголошено про залучення додаткових інвестицій в розмірі $ 20 мільйонів. Очолив раунд венчурний фонд New Enterprise Associates за участю фондів Index Ventures [En] , Runa Capital, E.ventures (колишній BV Capital) і гендиректора Nginx Гуса Робертсона [40] [41] [42] .
11 березня 2019 року проголошено, що компанія F5 Networks [En] купує NGINX. Сума операції оцінюється приблизно в 670 мільйонів доларів. [43] [44] [45] .