Для чего нужен nginx

Nginx — быстрый, дерзкий и суперпопулярный сервер

Мы постепенно рассказываем о веб-серверах — это программы, которые отвечают за то, чтобы нам выдавались сайты. В прошлой серии показывали Apache — один из первых массовых веб-серверов, который до сих пор работает в огромном количестве компьютеров. А сегодня — новое поколение.

Короткая предыстория

Главная проблема веб-сервера Apache, про который мы говорили прошлый раз, — это падение производительности с ростом трафика. Чем больше людей заходят на сайт, тем хуже он справляется. Решения на тот момент были такие:

И то и другое — дорого. Чтобы решить эту проблему, в 2002 году системный администратор Игорь Сысоев начал разрабатывать собственный веб-сервер, который сможет решить проблему с проседанием под нагрузкой. Тогда Игорь работал в «Рамблере».

Через два года вышел первый релиз его веб-сервера Nginx. Сейчас это самый популярный веб-сервер в России и в тройке самых известных — в мире.

Архитектура

Apache работает так: все запросы, которые попадают на этот сервер, обслуживаются до тех пор, пока не будет дан полный ответ на запрос. Это значит, что если для ответа нужно будет попросить движок сайта собрать новую страницу, то Apache даст задание движку, а сам будет ждать ответ, пока не дождётся. Когда запросов много, сервер начинает тратить свои ресурсы на простой и ожидания, а не на реальную работу.

В Nginx всё устроено немного иначе:

Получается, что так как Nginx не тратит время на ожидание результата, то он может одновременно обрабатывать гораздо больше запросов, чем Apache. В этом и есть суперсила Nginx.

В чём ещё отличия от Apache

Документация. У Apache документации, форумов и примеров гораздо больше, потому что проект начался на 7 лет раньше и все материалы сразу были на английском — стандартном языке для всех программистов.

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

Работа с модулями. В Apache всё просто: прописал название модуля и веб-сервер сразу его подгрузил и начал использовать. Не нужно — выгрузил, тоже на ходу. Это позволяет очень гибко настраивать поведение сервера в разные моменты времени.

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

Nginx + Apache = ❤️

Может показаться, что Nginx и Apache воюют друг с другом за долю рынка, но на самом деле они отлично работают вместе:

Получается так: Nginx занимается самыми простыми запросами, которые можно выполнить моментально, а всю динамику и сборки отправляет в Apache и продолжает заниматься своими делами.

В итоге польза всем: пока Apache ждёт или собирает страницы, Nginx успевает переделать кучу дел и не тратит своё время на ожидание. Системные администраторы часто используют такую связку, чтобы сбалансировать нагрузку на сервер и более эффективно использовать ресурсы.

Кто использует

Если вы назовёте три любых крупных ИТ-компании, то две из них точно будут использовать Nginx. В этом можно легко убедиться самому, посмотрев на список тех проектов, где используют эту программу:

Причина такой популярности — в скорости работы, надёжности и универсальности Nginx. К нему можно прикрутить почти любой софт и получить любую конфигурацию ответов на запросы.

Конфликт с «Рамблером»

В 2019 году произошла такая история: Рамблер заявил, что раз Сысоев во время создания Nginx работал у них, то и все права на этот веб-сервер тоже принадлежат им. В итоге завели дело по статье о нарушении авторских прав, а Рамблер требовал возместить им ущерб в 50 миллионов рублей.

Через полгода уголовное дело прекратили за отсутствием состава преступления: компания не смогла найти подтверждения своим словам и не смогла получить права на код Nginx.

По иронии судьбы на Nginx сейчас работают серверы и самого Рамблера 🙂

Источник

Что такое Nginx

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Содержание:

Nginx — мощный инструмент для развертывания веб-сервера, который при правильной настройке превосходит Apache. Области применения Nginx весьма обширны — от кэширования HTTP до создания инвертированного прокси-сервера.

Сейчас Nginx обслуживает примерно 30,8% всех существующих сайтов мира, о чьих веб-серверах есть информация в открытом доступе. Понимание, что из себя представляет Nginx и как этот программный продукт можно применять на практике, помогает эффективно решать задачи во многих областях IT-индустрии.

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

В этой статье рассмотрим принцип работы Nginx, а также его функционал, отличия от Apache и способ установки на конкретную ОС.

Что такое Nginx

Nginx (NGINX, Engine-X, «Энжин-кс») — это бесплатный веб- и почтовый прокси-сервер с непоточной (асинхронной) архитектурой и открытым кодом.

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Nginx работает на ОС Unix-типа и был успешно протестирован на OpenBSD, FreeBSD, Linux, Mac OS X, Solaris. На ОС Windows он стал доступен после выпуска бинарной сборки 0,7.52.

На данный момент функционалом пользуются такие известные платформы: Rambler, Begun, Yandex, SourceForge.net, WordPress.com, vkontakte.ru. Статистика показывает, что Nginx используют 22,3 млн веб-сайтов и 2,03 млн дополнительных активных сайтов.

Как работает Nginx

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

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Практическое применение

NGINX vs Apache

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

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Поскольку широкий функционал Nginx требует и значительно больших ресурсов системы, постоянно применять полноценную связку «Nginx + Apache» нецелесообразно. Чаще оба веб-сервера используются в симбиозе — Nginx отдает статику и перенаправляет обработку скриптов Apache.

Нужно, чтобы Nginx и Apache работали без сбоев? Мощный VPS от Eternalhost позволит сохранить оптимальную производительность, даже при пиковых нагрузках.

Сильные и слабые стороны

Архитектура и конфигурация Nginx

Установка на Linux возможна двумя способами — из предварительно собранного бинарного файла (пакета) или с помощью исходного кода.

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

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Установка Nginx на Windows возможна с помощью интерфейса Win32 API. Однако, такой вариант будет гораздо менее эффективен, даже в серверных версиях и не может быть рекомендован для широкого применения.

Установка из предварительно собранного файла

Для конфигурации Nginx задействуется директория /etc/nginx/. При дальнейшей работе с сервером важны файл nginx.conf и папка sites-available.

Основные настройки можно в файле nginx.conf. Благодаря этому файлу, все параметры можно настроить по своему усмотрению. Работать можно и с настройками по умолчанию.

Важные элементы конфигурации

Сервер может обслуживать множество сайтов. Файлы, которые определяют какие именно, находятся в директории /etc/nginx/sites-available.

Чтобы Nginx работал с сайтами, их необходимо слинковать с /etc/nginx/sites-enabled.

Использования метода линкования позволяет быстро запускать сайты, не удаляя никакие файлы после их использования. Помимо этого, можно просто скопировать файлы прямо в первую директорию.

Символьная ссылка — это путь к файлу. Общий синтаксис для неё выглядит так:

Примеры ссылок для каталога и файла:

Директория sites-available содержит конфигурацию виртуальных хостов. Это позволяет веб-серверу настраиваться для множества сайтов с разной конфигурацией. Сайты в этой директории не задействуются и будут обслуживаться только, если сделать символьную ссылку на папку sites-enabled.

Настройка конфигурации

Root-каталог Nginx по умолчанию находится в директории /usr/share/nginx/html. Все файлы, которые размещаются в нем, автоматически обслуживаются веб-сервером. Место определяется файлом конфигурации, который можно найти в /etc/nginx/conf.d/default.conf.

Основной конфигурационный файл сервера находится в /etc/nginx/nginx.conf. Через него изменяются любые настройки.

Запуск

Установка Nginx на CentOS

Рассмотрим практически установку Nginx на Linux, взяв за основу один из самых популярных дистрибутивов данной операционной системы – CentOS.

Заключение

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Nginx представляет собой практически готовое решение для множества задач, требующих развёртывания полноценного веб-сервера или прокси. По ряду параметров Nginx превосходит своего «старшего коллегу» Apache. Главные из них — отсутствие требовательности к ресурсам и способность обрабатывать большое число соединений одновременно.

Понимание работы и принципа обработки запросов в Nginx позволяет грамотно масштабировать и балансировать нагрузку на современных сайтах, располагающих контентом разных категорий. А связка Nginx и Apache позволяет максимально расширить эффективность применения веб-сервера.

Чтобы Nginx, Apache и другой сложный «софт» работал, как швейцарские часы, разверните их на виртуальном сервере от Eternalhost! Это мощный и надёжный инструмент для самых неординарных задач в области IT.

Источник

NGINX изнутри: рожден для производительности и масштабирования

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginxNGINX вполне заслуженно является одним из лучших по производительности серверов, и всё это благодаря его внутреннему устройству. В то время, как многие веб-серверы и серверы приложений используют простую многопоточную модель, NGINX выделяется из общей массы своей нетривиальной событийной архитектурой, которая позволяет ему с легкостью масштабироваться до сотен тысяч параллельных соединений.

Инфографика Inside NGINX сверху вниз проведет вас по азам устройства процессов к иллюстрации того, как NGINX обрабатывает множество соединений в одном процессе. Данная статья рассмотрит всё это чуть более детально.

Подготавливаем сцену: модель NGINX процессов

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Чтобы лучше представлять устройство, сперва необходимо понять как NGINX запускается. У NGINX есть один мастер-процесс (который от имени суперпользователя выполняет такие операции, как чтение конфигурации и открытие портов), а также некоторое количество рабочих и вспомогательных процессов.

На 4-х ядерном сервере мастер-процесс NGINX создает 4 рабочих процесса и пару вспомогательных кэш-процессов, которые управляют содержимым кэша на жестком диске.

Почему архитектура всё же важна?

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

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

Как же работает NGINX?

NGINX использует модель с фиксированным числом процессов, которая наиболее эффективно задействует доступные ресурсы системы:

Когда NGINX находится под нагрузкой, то в основном заняты рабочие процессы. Каждый из них обрабатывает множество соединений в неблокирующемся режиме, минимизируя количество переключений контекста.

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

Внутри рабочего процесса

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Каждый рабочий процесс NGINX инициализируется с заданной конфигурацией и набором слушающих сокетов, унаследованных от мастер-процесса.

Рабочие процессы начинают с ожидания событий на слушающих сокетах (см. также accept_mutex и разделяемые сокеты). События извещают о новых соединениях. Эти соединения попадают в конечный автомат — наиболее часто используемый предназначен для обработки HTTP, но NGINX также содержит конечные автоматы для обработки потоков TCP трафика (модуль stream) и целого ряда протоколов электронной почты (SMTP, IMAP и POP3).

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Конечный автомат в NGINX по своей сути является набором инструкций для обработки запроса. Большинство веб-серверов выполняют такую же функцию, но разница кроется в реализации.

Устройство конечного автомата

Конечный автомат можно представить себе в виде правил для игры в шахматы. Каждая HTTP транзакция — это шахматная партия. С одной стороны шахматной доски веб-сервер — гроссмейстер, который принимает решения очень быстро. На другой стороне — удаленный клиент, браузер, который запрашивает сайт или приложение по относительно медленной сети.

Как бы то ни было, правила игры могут быть очень сложными. Например, веб-серверу может потребоваться взаимодействовать с другими ресурсами (проксировать запросы на бэкенд) или обращаться к серверу аутентификации. Сторонние модули способны ещё сильнее усложнить обработку.

Блокирующийся конечный автомат

Вспомните наше определение процесса или потока, как самодостаточного набора инструкций, выполнение которых операционная система может назначать на конкретное ядро процессора. Большинство веб-серверов и веб-приложений используют модель, в которой для «игры в шахматы» приходится по одному процессу или потоку на соединение. Каждый процесс или поток содержит инструкции, чтобы сыграть одну партию до конца. Все это время процесс, выполняясь на сервере, проводит большую часть времени заблокированным в ожидании следующего хода от клиента.

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

NGINX, как настоящий Гроссмейстер

Вероятно вы слышали о сеансах одновременной игры, когда один гроссмейстер играет на множестве шахматных полей сразу с десятками противников?

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Кирил Георгиев на турнире в Болгарии сыграл параллельно 360 партий. Его итоговый результат составил: 284 победы, 70 вничью и 6 поражений.

Таким же образом рабочий процесс NGINX «играет в шахматы». Каждый рабочий процесс (помните — обычно всего один на вычислительное ядро) является гроссмейстером, способным играть сотни (а на самом деле сотни тысяч) партий одновременно.

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Почему так получается быстрее, чем блокирующаяся многопоточная архитектура?

Каждое новое соединение создает файловый дескриптор и потребляет небольшой объем памяти в рабочем процессе. Это очень малые накладные расходы на соединение. Процессы NGINX могут оставаться привязанными к конкретным ядрам процессора. Переключения контекста происходят достаточно редко и в основном когда не осталось больше работы.

В блокирующемся подходе, с отдельным процессом на каждое соединение, требуется сравнительно большой объем дополнительных ресурсов, и переключения контекста с одного процесса на другой происходят гораздо чаще.

Дополнительную информацию по теме можно также узнать из статьи об архитектуре NGINX от Андрея Алексеева, вице-президента по развитию и сооснователя компании NGINX, Inc.

С адекватной настройкой системы, NGINX прекрасно масштабируется до многих сотен тысяч параллельных HTTP cоединений на каждый рабочий процесс и уверенно поглощает всплески трафика (толпы новых игроков).

Обновление конфигурации и исполняемого кода

Архитектура NGINX с малым количеством рабочих процессов позволяет достаточно эффективно обновлять конфигурацию и даже его собственный исполняемый код на лету.

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Обновление конфигурации NGINX — очень простая, легковесная и надежная процедура. Она заключается в простой отправке мастер-процессу сигнала SIGHUP.

Обновление исполняемого кода NGINX — это Святой Грааль высокой доступности сервисов. Вы можете обновлять сервер на лету, без потери соединений, простоя ресурсов и каких-либо перерывов в обслуживании клиентов.

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Процесс обновления исполняемого кода использует схожий с перезагрузкой конфигурации подход. Новый мастер-процесс NGINX запускается параллельно со старым и получает от него дескрипторы слушающих сокетов. Оба процесса загружены и их рабочие процессы обрабатывают трафик. Затем вы можете отдать команду старому мастер-процессу на плавное завершение.

Вся процедура подробно описана в документации.

Подведем итоги

Мы дали поверхностный обзор того, как функционирует NGINX. Под этими простыми описаниями скрывается более чем десятилетний опыт разработки и оптимизации, который позволяет NGINX демонстрировать выдающуюся производительность на широком спектре оборудования и реальных задачах, оставаясь надежным и безопасным, как того требуют современные веб-приложения.

Если вы хотите узнать больше по данной теме, то рекомендуем для ознакомления:

Источник

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

Руководство для начинающих

В этом руководстве даётся начальное введение в nginx и описываются некоторые простые задачи, которые могут быть решены с его помощью. Предполагается, что nginx уже установлен на компьютере читателя. Если нет, см. Установка nginx. В этом руководстве описывается, как запустить и остановить nginx и перезагрузить его конфигурацию, объясняется, как устроен конфигурационный файл, и описывается, как настроить nginx для раздачи статического содержимого, как настроить прокси-сервер на nginx, и как связать nginx с приложением FastCGI.

У nginx есть один главный и несколько рабочих процессов. Основная задача главного процесса — чтение и проверка конфигурации и управление рабочими процессами. Рабочие процессы выполняют фактическую обработку запросов. nginx использует модель, основанную на событиях, и зависящие от операционной системы механизмы для эффективного распределения запросов между рабочими процессами. Количество рабочих процессов задаётся в конфигурационном файле и может быть фиксированным для данной конфигурации или автоматически устанавливаться равным числу доступных процессорных ядер (см. worker_processes).

Запуск, остановка, перезагрузка конфигурации

Где сигнал может быть одним из нижеследующих:

Например, чтобы остановить процессы nginx с ожиданием окончания обслуживания текущих запросов рабочими процессами, можно выполнить следующую команду:

Команда должна быть выполнена под тем же пользователем, под которым был запущен nginx.

Изменения, сделанные в конфигурационном файле, не будут применены, пока команда перезагрузить конфигурацию не будет вручную отправлена nginx’у или он не будет перезапущен. Для перезагрузки конфигурации выполните:

Получив сигнал, главный процесс проверяет правильность синтаксиса нового конфигурационного файла и пытается применить конфигурацию, содержащуюся в нём. Если это ему удаётся, главный процесс запускает новые рабочие процессы и отправляет сообщения старым рабочим процессам с требованием завершиться. В противном случае, главный процесс откатывает изменения и продолжает работать со старой конфигурацией. Старые рабочие процессы, получив команду завершиться, прекращают принимать новые запросы и продолжают обслуживать текущие запросы до тех пор, пока все такие запросы не будут обслужены. После этого старые рабочие процессы завершаются.

Дополнительную информацию об отправке сигналов процессам nginx можно найти в Управление nginx.

Структура конфигурационного файла

nginx состоит из модулей, которые настраиваются директивами, указанными в конфигурационном файле. Директивы делятся на простые и блочные. Простая директива состоит из имени и параметров, разделённых пробелами, и оканчивается точкой с запятой ( ; ). Блочная директива устроена так же, как и простая директива, но вместо точки с запятой после имени и параметров следует набор дополнительных инструкций, помещённых внутри фигурных скобок ( < и >). Если у блочной директивы внутри фигурных скобок можно задавать другие директивы, то она называется контекстом (примеры: events, http, server и location).

Часть строки после символа # считается комментарием.

Раздача статического содержимого

Во-первых, создайте каталог /data/www и положите в него файл index.html с любым текстовым содержанием, а также создайте каталог /data/images и положите в него несколько файлов с изображениями.

В блок server добавьте блок location следующего вида:

Далее, добавьте второй блок location :

Он будет давать совпадение с запросами, начинающимися с /images/ ( location / для них тоже подходит, но указанный там префикс короче).

Итоговая конфигурация блока server должна выглядеть следующим образом:

Чтобы применить новую конфигурацию, запустите nginx, если он ещё не запущен, или отправьте сигнал reload главному процессу nginx, выполнив:

Настройка простого прокси-сервера

Одним из частых применений nginx является использование его в качестве прокси-сервера, то есть сервера, который принимает запросы, перенаправляет их на проксируемые сервера, получает ответы от них и отправляет их клиенту.

Мы настроим базовый прокси-сервер, который будет обслуживать запросы изображений из локального каталога и отправлять все остальные запросы на проксируемый сервер. В этом примере оба сервера будут работать в рамках одного экземпляра nginx.

Во-первых, создайте проксируемый сервер, добавив ещё один блок server в конфигурационный файл nginx со следующим содержимым:

Далее, используйте конфигурацию сервера из предыдущего раздела и видоизмените её, превратив в конфигурацию прокси-сервера. В первый блок location добавьте директиву proxy_pass, указав протокол, имя и порт проксируемого сервера в качестве параметра (в нашем случае это http://localhost:8080 ):

Итоговая конфигурация прокси-сервера выглядит следующим образом:

Чтобы применить новую конфигурацию, отправьте сигнал reload nginx’у, как описывалось в предыдущих разделах.

Существует множество других директив для дальнейшей настройки прокси-соединения.

Настройка проксирования FastCGI

nginx можно использовать для перенаправления запросов на FastCGI-серверы. На них могут исполняться приложения, созданные с использованием разнообразных фреймворков и языков программирования, например, PHP.

Источник

Что такое Nginx

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

Nginx: введение

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

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

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

Для чего нужен nginx. Смотреть фото Для чего нужен nginx. Смотреть картинку Для чего нужен nginx. Картинка про Для чего нужен nginx. Фото Для чего нужен nginx

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *