Nginx

Nginx

nginx

nginx
Nginx.gif
Тип Веб-сервер, почтовый прокси-сервер
Разработчик Игорь Сысоев
ОС Unix‐подобные, Windows
Версия 0.7.65 (1 февраля 2010)
Тестовая версия 0.8.36 (22 апреля 2010)
Лицензия BSD-like, имеется коммерческая поддержка
Сайт www.nginx.ru

nginx (engine x) (читается как энджи́н экс) — веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах (тестировалась сборка и работа на FreeBSD, OpenBSD, Linux, Solaris, Mac OS X). Начиная с версии 0.7.52 появилась бинарная сборка под Microsoft Windows.

Разрабатывается Игорем Сысоевым с 2002-го[1] года для компании 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’ы могут быть сконфигурированы для обслуживания запросов из статического файла, проксирования на fastcgi/memcached сервер.

Для эффективного управления памятью nginx использует пулы. Пул — это последовательность предварительно выделенных блоков динамической памяти. Длина блока варьируется от 1 до 16 килобайт. Изначально под пул выделяется только один блок. Блок разделяется на занятую область и незанятую. Выделение мелких объектов выполняется путём продвижения указателя на незанятую область с учётом выравнивания. Если незанятой области во всех блоках не хватает для выделения нового объекта, то выделяется новый блок. Если размер выделяемого объекта превышает значение константы NGX_MAX_ALLOC_FROM_POOL, либо длину блока, то он полностью выделяется из кучи.

Таким образом, мелкие объекты выделяются очень быстро и имеют накладные расходы только на выравнивание.

nginx содержит модуль географической классификации клиентов по IP-адресу. В его основу входит база данных соответствия IP-адресов географическому региону, представленная в виде Radix tree в оперативной памяти. nginx предварительно распределяет первые несколько уровней дерева, таким образом, чтобы они занимали ровно 1 страницу памяти. Это гарантирует, что при поиске IP-адреса для первых нескольких узлов при трансляции адреса всегда найдётся запись в TLB.

Популярность

По данным Netcraft за март 2010 года, число сайтов, обслуживаемых nginx, превышает 12,6 миллионов [2], что делает его четвёртым по популярности веб-сервером в мире.

Как и lighttpd nginx часто используют для отдачи статического содержимого, генерируемого «тяжёлым» веб-приложением, работающим под управлением другого веб-сервера.

Следующие проекты используют nginx:

Примечания

  1. [на http://sysoev.ru/nginx/ можно прочитать: «Я начал разрабатывать nginx весной 2002 года…»]
  2. Netcraft Web Server Survey(англ.)
  3. GET -ed http://sourceforge.net | grep Server
  4. Google Security Blog (англ.)

См. также

Ссылки


Wikimedia Foundation. 2010.

Поможем написать курсовую

Полезное


Смотреть что такое "Nginx" в других словарях:

  • nginx — Entwickler Igor Sysoev Aktuelle Version 1.0.9 (stable)[1] (1.& …   Deutsch Wikipedia

  • nginx — Тип Веб сервер, почтовый прокси сервер Автор Игорь Сысоев Разработчик NGINX, Inc. Написана на C Операционная система …   Википедия

  • nginx — Développeur Igor Sysoev Dernière version 1.0.8 ( …   Wikipédia en Français

  • nginx — Original author(s) Igor Sysoev Developer(s) Igor Sysoev Initial release October 4, 2004; 7 years ago ( …   Wikipedia

  • Nginx — Développeur Igor Sysoev Dernière version 0.7.61 (le 22  …   Wikipédia en Français

  • Nginx — Entwickler: Igor Sysoev Aktuelle Version: 0.6.35 (26. Januar 2009) Betriebssystem: Unix Derivate Kategorie: Webserver …   Deutsch Wikipedia

  • Nginx — Desarrollador Igor Sysoev http://nginx.org/ Informac …   Wikipedia Español

  • Nginx — Infobox Software name = nginx caption = author = developer = Igor Sysoev released = latest release version = 0.6.32 latest release date = July 7, 2008 latest preview version = 0.7.16 latest preview date = Sep 08, 2008 operating system = Unix like …   Wikipedia

  • nginx — noun a high speed Web server/reverse proxy and email proxy …   Wiktionary

  • C10k problem — Le c10k problem[note 1] que l on pourrait traduire en français par le problème des dix mille connexions simultanées, est un code numérique utilisé pour exprimer la limitation que la plupart des serveurs ont en termes de connexions réseaux. Cette… …   Wikipédia en Français


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»