• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

FREEHOST.WIKI

Что такое NGINX?

Статья также доступна на украинском (перейти к просмотру).

Nginx это специальное ПО с открытым кодом, совместимое с UNIX-системами. Разрабатывался как веб-сервер для обслуживания HTTP-запросов. Над проектом работал программист Игорь Сысоев. Разработка началась в 2002 году, релиз ПО – декабрь 2004 года. Основная цель, которую ставил собой Сысоев, - решение проблемы C10k, связанной со сложностью обработки многочисленных запросов (10000 запросов и более). Созданный им веб-сервер успешно справлялся с высокими нагрузками, чем и обусловлена его дальнейшая популярность, несмотря на существование серьезного конкурента в лице веб сервера Apache.  Официальный сайт ресурса nginx.org

Веб-сервер - что это? Веб-сервер - это специализированное программное обеспечение, которое управляет обработкой запросов пользователей (HTTP-запросы от клиентов сети – веб-браузеров) и генерирует ответы в виде HTML-кода, которые веб-браузеры клиентской стороны интерпретируют в удобочитаемый формат веб-страниц.

Содержание

Сферы применения, особенности функционирования

На данный момент веб-сервер Nginx является одним из самых надежных серверных ПО благодаря успешной реализации управляемой событиями и асинхронной архитектуры. Его используют такие интернет-гиганты, как Google, WordPress, Netflix и многие другие. Наиболее распространенные варианты применения:

  1. В качестве самостоятельного HTTP-сервера;
  2. В виде SMTP, IMAP, POP3-сервера;
  3. В связке с Apache, где Nginx отведена роль кеширующего сервера;

Для установки и проверки наличия Nginx можно выполнить две простые команды:

  1. Apt-get install Nginx
  2. Nginx -v

В результате выполнения последней команды будет отображены сведения о версии установленного ПО.

Основной Nginx являются асинхронные неблокирующие event-driven алгоритмы. Сервер генерирует рабочие процессы, благодаря чему ему удается одновременно обрабатывать огромное количество поступающих запросов. Все рабочие процессы выполняются независимо друг от друга. В рамках каждого рабочего процесса выполняются рабочие соединения. Обработка соединений происходит только в том случае, если было сгенерировано новое событие.

Таким образом, имеем трехслойную архитектуру веб-сервера:

  1. Рабочие соединения – структурные единицы рабочего процесса.
  2. Запросы поступаю от рабочих соединений к рабочим процессам.
  3. Все данные поступают в главный (основной) процесс, предоставляющий конечные результаты обработки.

Используемые алгоритмы способствуют высокой масштабируемости системы на даже относительно слабых машинах. Nginx - однопоточный сервер, не генерирующий процессы для каждого нового соединения. Этим обусловлена равномерность использования ресурсов физического сервера (процессор, ОЗУ) даже при обработке большого числа запросов.

Основные преимущества, сравнение с Apache

Целесообразность выбора того или иного решения для веб-сервера определяется на основе следующих критериев:

  1. Производительность. Nginx демонстрирует высокую скорость обработки подключений статического контента. По этому показателю он обходит ближайшего конкурента (Apache) в 2 раза. Производительность при работе с динамическими сайтами у обоих программных продуктов примерно одинаковая.
  2. Использование ресурсов. Nginx является менее требовательным к памяти, чем веб-сервер Apache.
  3. Совместимость с ОС. Nginx поддерживает многие популярные операционные системы. Однако, он разрабатывался для UNIX-систем. Совместимость с Windows реализована слабо, поэтому скорость работы ПО в этой системе достаточно низкая.
  4. Пользовательская поддержка. Помощь клиентам предоставляется в рамках e-mail-переписки. Также существуют форумы сообществ, на которых обсуждают различные вопросы.

Основные отличия от Apache:

  1. Быстрая обработка запросов, связанных со статическим контентом. Однако, Nginx не содержит алгоритмов для самостоятельной обработки запросов к динамическим данным. Для этого используется внешний процессор, который выполняет функции по обработке и возвращает итоговый результат Nginx. Последний в свою очередь отправляет его клиенту.
  2. Запрет на возможность переопределения конфигурационных файлов на уровне директорий, обуславливающий прирост производительности и безопасности в сравнении с Apache, интерпретирующий каждый .htaccess-файл.
  3. Ориентир на работу с URI в первую очередь, которые только при необходимости транслируются в запросы к файловой системе. Такой подход обеспечивает совмещение двух основных функциональностей: прокси-сервер и веб-сервер.
  4. Отсутствие механизма динамического подключения различных модулей (для шифрования, проксирования, почтовых функций и прочие). С этим связаны как преимущества (безопасность, подключение только необходимых модулей), так и недостатки (необходимость ручной сборки, более низкая гибкость решения в сравнении с Apache).
  5. Высокая масштабируемость при более низких требованиях к вычислительным системам (физическим серверам).

Совместное функционирование 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 является наиболее оптимальным вариантом.

ДРУГИЕ СТАТЬИ ПО ТЕМЕ

Спасибо, что выбираете FREEhost.UA