Что такое Nginx

Читайте нашу статью, если хотите узнать, что такое Nginx, зачем он нужен и как работает эта технология.

Nginx: введение

Nginx — это площадка с открытым исходным кодом, с помощью которой можно создать свой веб-сервер. Но что такое веб-сервер и сервер вообще?

Сервер — это мощный компьютер, на котором хранятся различные данные, например, файлы сайтов. Под файлами сайта мы понимаем то, из чего сделаны сайты — написанный код, базы данных и вся внешняя оболочка (дизайн, сверстанные страницы, видео, картинки, таблицы и др). Веб-сервер — это специализированный сервер. Он принимает запросы, которые пользователи вводят в поисковую строку браузера (HTTP-запросы), находит искомое и выдает ответы (HTTP-ответы). 

Допустим, пользователь хочет зайти на сайт хостинг-провайдера и вводит в браузере “2domains”. В этот момент браузер подает сигнал веб-серверу. Веб-сервер принимает запрос и связывается с сервером, на котором хранятся файлы сайта 2domains.ru. Сервер собирает нужные данные и передает их веб-серверу, а веб-сервер — браузеру. Браузер принимает данные и отображает пользователю внешнюю часть сайта. Таким образом, веб-сервер связывает браузер и сервер, чтобы пользователи могли получить нужную им информацию. 

Стоит понимать, что в браузер одномоментно поступает около десятка тысяч запросов. Чтобы справиться с таким потоком, нужны огромные ресурсы и мощности. С помощью технологий Nginx можно создать мощный веб-сервер, почтовый сервер типа SMTP/IMAP/POP3, обратный прокси-сервер или сервер приложений.  

Зачем нужен Nginx:

  • грамотно распределяет поступающие на сервер нагрузки;

  • конфигурирует тысячи соединений одновременно;

  • обеспечивает отказоустойчивость;

  • аутентифицирует пользователей (по типу “логин”-”пароль”); 

  • позволяет делать масштабирование.

Иногда Nginx используют вместо веб-сервера Apache. Несмотря на то, что нередко их приравнивают друг к другу, можно сказать однозначно — Nginx потребляет меньше ресурсов и работает быстрее. А администрирование Nginx — более простой процесс.

Принцип работы Nginx 

Как мы говорили ранее, задача каждого веб-сервера — обрабатывать запросы. Обработка любого поступающего запроса происходит в несколько этапов. Для работы на этих этапах веб-серверы используют один из двух алгоритмов — синхронный или асинхронный. 

Синхронный алгоритм образует отдельный поток для каждого этапа обработки. Работа над задачей двигается в строгой последовательности: от первого этапа ко второму, от второму к третьему и так далее. Таким образом, скорость обработки всего запроса находится в прямой зависимости от скорости обработки самого трудоемкого этапа. Пока над ним ведется работа, система не может перейти к следующему этапу, а значит часть ресурсов простаивает.

С одной стороны — с помощью синхронного алгоритма можно детально проанализировать данные каждого отдельного этапа. С другой — в один момент система способна обрабатывать ограниченное количество данных.

При асинхронном алгоритме обработка происходит не в строгом порядке, а в едином потоке. Фактическая последовательность этапов сохраняется, но на внутреннем уровне работа на этапах ведется гибко, а не системно. Веб-сервер одновременно анализирует все этапы работы. Исходя из ситуации он быстро перераспределяет ресурсы — снимает их с уже выполненных этапов и направляет к тем, на которых процесс идет медленнее. Благодаря этому веб-сервер выполняет большее количество операций в единицу времени. Работа с Nginx позволяет использовать именно асинхронный — более продвинутый алгоритм обработки запросов. 

Стоит отметить, что в асинхронной системе тоже периодически возникают блокировки. Так небольшой сбой на одном из этапов может заблокировать работу всего потока. Поэтому в версии Nginx 1.7.11 была внедрена специальная механика — пул потоков. Пул потоков позволяет выделять отдельные потоки для долго исполняемых операций. Общий поток и отдельный поток находятся в обработке параллельно, но не синхронно. К моменту, когда закончится обработка всех этапов общего потока, также закончится обработка и отдельного потока. Затем они синхронизируются между собой и сервер будет заниматься обработкой следующего запроса.

Итак, теперь вы знаете, что такое веб сервер Nginx, как он работает и какую технологию лучше использовать, чтобы создать надежный почтовый прокси сервер.

 

Если вы не нашли ответ, спросите у нас!
Написать в поддержку