Что такое 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) в 2 раза. Производительность при работе с динамическими сайтами у обоих программных продуктов примерно одинаковая.
- Использование ресурсов. Nginx является менее требовательным к памяти, чем веб-сервер Apache.
- Совместимость с ОС. Nginx поддерживает многие популярные операционные системы. Однако, он разрабатывался для UNIX-систем. Совместимость с Windows реализована слабо, поэтому скорость работы ПО в этой системе достаточно низкая.
- Пользовательская поддержка. Помощь клиентам предоставляется в рамках e-mail-переписки. Также существуют форумы сообществ, на которых обсуждают различные вопросы.
Основные отличия от Apache:
- Быстрая обработка запросов, связанных со статическим контентом. Однако, Nginx не содержит алгоритмов для самостоятельной обработки запросов к динамическим данным. Для этого используется внешний процессор, который выполняет функции по обработке и возвращает итоговый результат Nginx. Последний в свою очередь отправляет его клиенту.
- Запрет на возможность переопределения конфигурационных файлов на уровне директорий, обуславливающий прирост производительности и безопасности в сравнении с Apache, интерпретирующий каждый .htaccess-файл.
- Ориентир на работу с URI в первую очередь, которые только при необходимости транслируются в запросы к файловой системе. Такой подход обеспечивает совмещение двух основных функциональностей: прокси-сервер и веб-сервер.
- Отсутствие механизма динамического подключения различных модулей (для шифрования, проксирования, почтовых функций и прочие). С этим связаны как преимущества (безопасность, подключение только необходимых модулей), так и недостатки (необходимость ручной сборки, более низкая гибкость решения в сравнении с Apache).
- Высокая масштабируемость при более низких требованиях к вычислительным системам (физическим серверам).
Совместное функционирование Apache + Nginx
Рассмотренные характеристики веб-серверов обуславливают выбор в пользу того или иного для каждого конкретного проекта. В некоторых случаях целесообразно использовать связку Apache + Nginx. Последний разворачивается перед Apache для выполнения функций реверс-прокси. За обработку всех входящих запросов отвечает Nginx, способный успешно справляться с их большим количеством. Его основная задача в данной конфигурации – обработка статического контента. Если требуется выполнение, например, PHP-сценариев, запрос поступает на Apache, где происходит его обработка. Полученный результат передается вначале Nginx, а затем – конечному пользователю.
Таким образом, Nginx сортирует запросы на статические и динамические. С первыми он успешно справляется сам, вторые – адресует 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 является наиболее оптимальным вариантом.