Що таке NGINX
Стаття також доступна російською (перейти до перегляду).
Nginx це спеціальне ПЗ з відкритим кодом, сумісне з UNIX-системами. Розроблявся як веб-сервер для обслуговування запитів HTTP. Над проектом працював програміст Ігор Сисоєв. Розробка почалася в 2002 році, реліз ПЗ – грудень 2004 року. Основна мета, яку ставив перед собою Сисоєв - вирішення проблеми C10k, пов'язаної зі складністю обробки багаточисленних запитів (10000 запитів і більше). Створений ним веб-сервер успішно справлявся з високими навантаженнями, чим і зумовлено його подальшу популярність, незважаючи на існування серйозного конкурента в особі веб сервера Apache. Офіційний сайт ресурсу nginx.org
Веб-сервер – що це? Веб-сервер - це спеціалізоване програмне забезпечення, яке керує обробкою запитів користувачів (HTTP-запити від клієнтів мережі – веб-браузерів) і генерує відповіді у вигляді HTML-коду, які веб-браузери клієнтської сторони інтерпретують у формат веб-сторінок, що легко читаються.
Зміст
- Сфери застосування, особливості функціонування
- Основні переваги порівняння з Apache
- Спільне функціонування Apache + Nginx
- Висновки
Сфери застосування, особливості функціонування
На даний момент веб-сервер Nginx є одним з найнадійніших серверних програм завдяки успішній реалізації керованої подіями та асинхронної архітектури. Його використовують такі інтернет-гіганти, як Google, WordPress, Netflix та багато інших. Найбільш поширені варіанти застосування:
- В якості самостійного HTTP-сервера;
- У вигляді SMTP, IMAP, POP3-сервера;
- У зв'язці з Apache, де Nginx відведена роль сервера, що кешує;
Для встановлення та перевірки наявності Nginx можна виконати дві прості команди:
- Apt-get install Nginx
- Nginx -v
В результаті виконання останньої команди буде відображено відомості про версію встановленого програмного забезпечення.
Основний Nginx є асинхронні алгоритми, що не блокують event-driven. Сервер генерує робочі процеси, завдяки чому йому вдається одночасно обробляти величезну кількість запитів, що надходять. Усі робочі процеси виконуються незалежно один від одного. У межах кожного робочого процесу виконуються робочі з'єднання. Обробка з'єднань відбувається лише в тому випадку, якщо було згенеровано нову подію.
Таким чином, маємо тришарову архітектуру веб-сервера:
- Робочі з'єднання – структурні одиниці робочого процесу.
- Запити надходять від робочих з'єднань до робочих процесів.
- Всі дані надходять до головного (основного) процесу, що надає кінцеві результати обробки.
Алгоритми, що використовуються, сприяють високій масштабованості системи навіть на відносно слабких машинах. Nginx - однопотоковий сервер, що не генерує процеси для кожного нового з'єднання. Цим обумовлена ??рівномірність використання ресурсів фізичного сервера (процесор, ОЗП) навіть під час обробки великої кількості запитів.
Основні переваги, порівняння з Apache
Доцільність вибору того чи іншого рішення для веб-сервера визначається на основі таких критеріїв:
- Продуктивність. Nginx показує високу швидкість обробки підключень статичного контенту. За цим показником він обходить найближчого конкурента (Apache) вдвічі. Продуктивність при роботі з динамічними сайтами обох програмних продуктів приблизно однакова.
- Використання ресурсів. Nginx є менш вимогливим до пам'яті, ніж веб-сервер Apache.
- Сумісність із ОС. Nginx підтримує багато популярних операційних систем. Однак він розроблявся для UNIX-систем. Сумісність з Windows реалізована слабко, тому швидкість роботи програмного забезпечення в цій системі досить низька.
- Підтримка користувача. Допомога клієнтам надається у рамках e-mail-листування. Існують також форуми спільнот, на яких обговорюють різні питання.
Основні відмінності від Apache:
- Швидка обробка запитів, пов'язаних із статичним контентом. Однак Nginx не містить алгоритмів для самостійної обробки запитів до динамічних даних. Для цього використовується зовнішній процесор, який виконує функції обробки та повертає підсумковий результат Nginx. Останній, своєю чергою, відправляє його клієнту.
- Заборона на можливість перевизначення конфігураційних файлів на рівні директорій, що зумовлює приріст продуктивності та безпеки в порівнянні з Apache, що інтерпретує кожен .htaccess-файл.
- Орієнтир на роботу з URI в першу чергу, які лише за потреби транслюються у запити до файлової системи. Такий підхід забезпечує поєднання двох основних функціональностей: проксі-сервер та веб-сервер.
- Відсутність механізму динамічного підключення різних модулів (для шифрування, проксіювання, поштових функцій та інші). З цим пов'язані як переваги (безпека, підключення тільки необхідних модулів), так і недоліки (необхідність ручного складання, нижча гнучкість рішення порівняно з Apache).
- Висока масштабованість при більш низьких вимогах до обчислювальних систем (фізичних серверів).
Спільне функціонування Apache + Nginx
Розглянуті характеристики веб-серверів, зумовлюють вибір на користь того чи іншого кожного конкретного проекту. У деяких випадках доцільно використовувати зв'язок Apache + Nginx. Останній розгортається перед Apache для виконання функцій реверс-проксі. За обробку всіх запитів відповідає Nginx, здатний успішно справлятися з їх великою кількістю. Його основне завдання у цій конфігурації – обробка статичного контенту. Якщо потрібно виконання, наприклад, PHP-сценаріїв, запит надходить на Apache, де відбувається його обробка. Отриманий результат передається спочатку Nginx,а потім – до кінцевого користувача.
Таким чином, Nginx сортує запити на статичні та динамічні. З першими він успішно справляється сам, інші – ndash; адресує Apache. Цей підхід спричиняє часткове зниження навантаження на останній.
Пов'язування Apache + Nginx використовується для горизонтального масштабування веб-додатків. Наприклад, можливий варіант підключення кількох веб-серверів Apache до одного Nginx, що розподіляє навантаження між ними. Підхід сприяє підвищенню стійкості до відмови веб-сервісів.
Багато сервісів FREEhost.UA, наприклад віртуальний хостинг, також використовують зв'язку Apache + Nginx. Apache відповідає за роботу з динамічним контентом, а Nginx – за статичний контент. Оскільки веб-сервер Nginx знаходиться попереду, проксируючи весь трафік на Apache, за його допомогою ми фільтруємо частину “шкідливого трафіку” під час DDOS атаки та спроб злому сайтів.
ПІДБРАТИ | ХОСТИНГ від 29 грн./міс. |
- 3000 мегабайт диск - пошта без обмежень - автомонтаж CMS - безкоштовний домен |
Підходить для розміщення персональних та корпоративних сайтів, невеликих електронних мгазинів. |
Висновки
Тепер ви знаєте, що таке Nginx. Веб-сервер Nginx це потужне, функціональне та гнучке рішення для різних завдань у сфері IT. Це основний конкурент Apache, який успішно використовується для роботи багатьох масштабних веб-проектів.
Обираючи між Apache та Nginx, слід враховувати сильні та слабкі сторони ПЗ, що розглядається, а також особливості функціонування веб-додатку. У деяких випадках зв'язування Apache + Nginx є найбільш оптимальним варіантом.