Nginx (eNGIne X, «Энджинкс» или «Энджин-икс») — это программное обеспечение с открытым исходным кодом для создания легкого и мощного веб-сервера. Также его используют в качестве почтового или обратного прокси-сервера. Nginx решает проблему падения производительности с ростом трафика и является самым популярным веб-сервером в России и вторым в мире.
Nginx разработал Игорь Сысоев, системный администратор «Рамблера», в 2002 году, чтобы решить проблему с проседанием под нагрузкой. В 2004 году продукт стал доступен для широкого круга пользователей и получил одобрение. С 2011 года выпуском занимается собственная фирма Игоря, которая через 2 года представила расширенную платную версию продукта (Nginx Plus).
Для чего нужен
Сейчас Nginx обслуживает соединения, обрабатывает запросы, которые поступают к серверу, а также используется:
- для обработки запросов с сайтов, где много статического неизменного контента;
- обслуживания серверов, на которые поступает много запросов одновременно;
- в качестве прокси, почтового сервера или для распределения нагрузки на серверную часть.
- SSL/TLS терминация: Nginx способен выполнять терминацию SSL/TLS, обеспечивая шифрование и дешифрование данных между клиентами и серверами. Это снижает нагрузку на бэкэнд-серверы и улучшает безопасность.
Особенности Nginx
Высокая скорость
Особенно заметна при работе со статическим контентом, который не нужно постоянно обновлять. Когда пользователь загружает страницу сайта, сначала веб-сервер Nginx кэширует данные у себя, а потом возвращает результат. При следующих запросах страницы ответ происходит в несколько раз быстрее.
Гибкость
Программное обеспечение гибко конфигурируется и настраивается под потребности инфраструктуры.
Малое потребление памяти
Чтобы уменьшить нагрузку на оперативную память, Nginx использует выделенный сегмент памяти — «пул» (pool). Он динамический и может расширяться при увеличении длины запроса.
Хорошая поддержка
У Nginx активное комьюнити и хорошая клиентская поддержка, а документация доступна и на русском языке.
Доступность
Программа бесплатная и распространяется по свободной лицензии. У нее открытый программный код, поэтому любой разработчик может адаптировать Nginx под себя.
Как работает Nginx
Когда пользователь совершает действие на странице, информация передается на сервер. Он находит файлы, передает сведения.
Если обрабатывать запросы каждого пользователя по отдельности, серверу придется одновременно выполнять много процессов. Сайт начнет работать медленно. Nginx позволяет обойти ограничение. Его архитектура асинхронная: все запросы обрабатываются на разных этапах, что повышает скорость обработки.
Запросы от одного пользователя разбиваются на маленькие структуры — сетевые соединения. Обработка происходит быстрее: за однотипные действия отвечает один процесс. После обработки соединения собираются в одном виртуальном контейнере, чтобы преобразоваться в единый первоначальный запрос, а затем отправляются пользователю. Благодаря такому принципу работы Nginx одно сетевое соединение может обслуживать до 1024 запросов.
Для каких ОС подходит Nginx
Nginx является мультиплатформенным веб-сервером и прокси-сервером, который подходит для различных операционных систем. Вот список некоторых из наиболее популярных ОС, на которых можно установить и запустить Nginx:
- Linux: Nginx является основным выбором для многих Linux-дистрибутивов. Это включает в себя такие дистрибутивы, как Ubuntu, Debian, CentOS, Red Hat Enterprise Linux (RHEL), Fedora, openSUSE и многие другие.
- Unix (BSD): Nginx также хорошо работает на различных Unix-подобных системах, включая FreeBSD и OpenBSD.
- macOS: Вы можете установить Nginx на компьютерах Mac с помощью пакетных менеджеров, таких как Homebrew.
- Windows: Хотя Nginx не является стандартным выбором для Windows, существует официальная поддержка Nginx для Windows, и его можно использовать на этой платформе.
- Docker: Nginx также может быть запущен в контейнерах Docker на различных ОС.
- UNIX-подобные системы в облаке: Вы можете установить Nginx на различных облачных платформах, таких как Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP) и другие.
- Другие ОС: Nginx может быть скомпилирован и работать на многих других операционных системах, если есть подходящие версии компиляторов и библиотек.
Что выбрать: Nginx или Apache
Apache — главный конкурент Nginx. Существует дольше, поэтому имеет более крупное комьюнити. Работать с Apache легче за счет простой архитектуры и полноценной поддержки Windows. При работе с динамическим контентом показывает такую же производительность, как Nginx. Но статический контент Nginx обрабатывает в 2,5 раза быстрее, потребляя при этом меньше памяти.
Параметр | Nginx | Apache |
---|---|---|
Тип | Веб-сервер, прокси-сервер | Веб-сервер |
Лицензия | BSD-style | Apache License 2.0 |
Архитектура | Событийная (event-driven) | Процессо-ориентированная (process-based) |
Производительность | Высокая, эффективное управление ресурсами | Высокая, но более ресурсозатратная |
Распространенность | Популярен, широко используется | Популярен, широко используется |
Модульность | Ограниченная | Высокая, множество модулей |
Конфигурация | Простая, читаемая | Изменчивая, сложная |
Версия PHP (модуль PHP-FPM) | Да | Да |
Поддержка .htaccess файлов | Нет | Да |
Масштабируемость | Хорошая, легко масштабируется | Хорошая, но может потребоваться больше усилий |
Виртуальные хосты | Легко настраиваются | Легко настраиваются |
SSL/TLS поддержка | Да | Да |
Совместимость с Windows | Ограниченная (официально только через WSL) | Да, полная поддержка |
Проксирование | Превосходное | Отличное |
Поддержка HTTP/2 | Да | Да |
Документация | Хорошо документирован | Хорошо документирован |
Сообщество и поддержка | Активное | Активное |
Nginx может работать в связке с Apache. Если запрос приходит на выдачу статического материала, его обрабатывает Nginx. Если пользователю нужен динамический контент (графика, видео), подключается Apache.
0 комментариев