nginx
| nginx | |
| Файл:Nginx.gif | |
| Тип | Веб-сервер, почтовый прокси-сервер |
| Разработчик | Игорь Сысоев |
| ОС | Unix‐подобные, Windows |
| Версия | 0.7.65 (1 февраля 2010) |
| Тестовая версия | 0.8.33 (1 февраля 2010) |
| Лицензия | BSD-like, имеется коммерческая поддержка |
| Сайт | www.nginx.ru |
nginx (engine x) (читается как энджин икс) — веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах (тестировалась сборка и работа на FreeBSD, OpenBSD, Linux, Solaris, Mac OS X). Начиная с версии 0.7.52 появилась бинарная сборка под Microsoft Windows.
Разрабатывается Игорем Сысоевым с 2000-го года для компании Rambler и постоянно модернизируется. Осенью 2004 года вышел первый публично доступный релиз.
Основные функции
HTTP-сервер
- обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кеш дескрипторов открытых файлов
- акселерированное проксирование без кэширования, простое распределение нагрузки и отказоустойчивость
- поддержка кеширования при акселерированном проксировании и FastCGI
- акселерированная поддержка FastCGI и memcached серверов, простое распределение нагрузки и отказоустойчивость
- модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, HTTP-аутентификация, SSI-фильтр
- несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно
- поддержка SSL
- экспериментальная поддержка встроенного Perl
IMAP/POP3-прокси сервер
- перенаправление пользователя на IMAP/POP3-бэкенд с использованием внешнего HTTP-сервера аутентификации
- простая аутентификация (LOGIN, USER/PASS)
- поддержка SSL и StartTLS
Архитектура
В nginx рабочие процессы обслуживают одновременно множество соединений, мультиплексируя их вызовами операционной системы select, epoll (Linux) и kqueue (FreeBSD). Рабочие процессы выполняют цикл обработки событий от дескрипторов (см. Событийно-ориентированное программирование). Полученные от клиента данные разбираются с помощью конечного автомата. Разобранный запрос последовательно обрабатывается цепочкой модулей, задаваемой конфигурацией. Ответ клиенту формируется в буферах, которые хранят данные либо в памяти, либо указывают на отрезок файла. Буферы объединяются в цепочки, определяющие последовательность, в которой данные будут переданы клиенту. Если операционная система поддерживает эффективные операции ввода-вывода, такие как writev и sendfile, то nginx применяет их по возможности.
Конфигурация HTTP-сервера nginx разделяется на виртуальные серверы (директива server). Виртуальные серверы разделяются на location’ы (location). Для виртуального сервера возможно задать адреса и порты, на которых будут приниматься соединения, а так же имена, которые могут включать * для обозначения произвольной последовательности в первой и последней части, либо задаваться регулярным выражением.
location’ы могут задаваться точным URI, частью URI, либо регулярным выражением. location’ы могут быть сконфигурированы для обслуживания запросов из статического файла, проксирования на http://fastcgi/memcached сервер.
Для эффективного управления памятью nginx использует пулы. Пул — это последовательность предварительно выделенных блоков динамической памяти. Длина блока варируется от 1 до 16 килобайт. Изначально под пул выделяется только один блок. Блок разделяется на занятую область и незанятую. Выделение мелких объектов выполняется путем продвижения указателя на незанятую область с учетом выравнивания. Если незанятой области во всех блоках нехватает для выделения нового объекта, то выделяется новый блок. Если размер выделяемого объекта превышает значение константы NGX_MAX_ALLOC_FROM_POOL, либо длину блока, то он полностью выделяется из кучи.
Таким образом, мелкие объекты выделяются очень быстро и имеют накладные расходы только на выравнивание.
nginx содержит модуль географической классификации клиентов по IP-адресу. В его основу входит база данных соответствия IP-адресов географическому региону, представленная в виде Radix tree в оперативной памяти. nginx предварительно распределяет первые несколько уровней дерева, таким образом, чтобы они занимали ровно 1 страницу памяти. Это гарантирует, что при поиске IP-адреса для первых нескольких узлов при трансляции адреса всегда найдется запись в TLB.
Популярность
По данным Netcraft за декабрь 2009 года, число сайтов, обслуживаемых nginx, превышает 15,5 миллионов [1], что делает его третьим по популярности веб-сервером в мире.
Следующие проекты используют nginx:
- Rambler
- Yandex
- Begun
- Wordpress.com
- Wrike
- SourceForge.net[2]
- vkontakte.ru
- megashara.com
- Либрусек
- Taba.ru
- и многие другие.[3]
Примечания
- ↑ Netcraft Web Server Survey(англ.)
- ↑ GET -ed http://sourceforge.net | grep Server
- ↑ Google Security Blog (англ.)
См. также
Ссылки
- Официальный сайт. (рус.)
- Английская версия. (англ.)
- Wiki-nginx (англ.)
- Лист рассылки nginx (рус.)
- Статьи о настройке nginx (рус.)
- Статья «введение в nginx» (2 части) (рус.)
- Обзор плагина для интеграции IntelliJ IDEA с nginx (рус.) Сам плагин
- Принципы работы и область применения nginx (рус.)
bg:Nginx de:Nginx en:Nginx fr:Nginx gl:Nginx he:Nginx ja:Nginx lv:Nginx pl:Nginx pt:Nginx uk:Nginx zh:Nginx
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....