WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

nginx

логотип nginx
Тип веб-сервер
Автор Игорь Сысоев
Разработчик NGINX, Inc.[d] и Игорь Сысоев
Написана на Си[1]
Операционная система UNIX-подобные операционные системы и Microsoft Windows
Первый выпуск 4 октября 2004[2]
Последняя версия
Читаемые форматы файлов PEM encoded certificate[d][4] и PEM encoded RSA private key[d][4]
Состояние активное
Лицензия BSD-like[5], имеется коммерческая поддержка[6]
Сайт nginx.org
nginx.org
 nginx на Викискладе

nginx (engine x — англ. Engine X; по-русски произносится как э́нгинкс[7] или э́нжин-и́кс[8]) — веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах (тестировалась сборка и работа на FreeBSD, OpenBSD, Linux, Solaris, Mac OS X, AIX и HP-UX). Начиная с версии 0.7.52 появилась экспериментальная[9] бинарная сборка под Microsoft Windows.

Игорь Сысоев начал разработку в 2002 году[10]. Осенью 2004 года вышел первый публично доступный релиз. С июля 2011 работа над nginx продолжается в рамках компании Nginx.

Основные функции

nginx позиционируется производителем как простой, быстрый и надёжный сервер, не перегруженный функциями.

Применение nginx целесообразно прежде всего для статических веб-сайтов и как обратного прокси-сервера перед динамическими сайтами[источник не указан 2415 дней].

HTTP-сервер

  • обслуживание неизменяемых запросов, индексных файлов, автоматическое создание списка файлов, кеш дескрипторов открытых файлов
  • акселерированное проксирование без кэширования, простое распределение нагрузки и отказоустойчивость
  • поддержка кеширования при акселерированном проксировании и FastCGI
  • акселерированная поддержка FastCGI и memcached серверов, простое распределение нагрузки и отказоустойчивость
  • модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, HTTP-аутентификация, SSI-фильтр
  • несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно
  • поддержка SSL
  • поддержка PSGI, WSGI
  • экспериментальная поддержка встроенного Perl

SMTP/IMAP/POP3-прокси сервер

  • перенаправление пользователя на SMTP/IMAP/POP3-бэкенд с использованием внешнего HTTP-сервера аутентификации
  • простая аутентификация (LOGIN, USER/PASS)
  • поддержка SSL и STARTTLS

Архитектура

В nginx рабочие процессы обслуживают одновременно множество соединений, мультиплексируя их вызовами операционной системы select, epoll (Linux) и kqueue (FreeBSD). Рабочие процессы выполняют цикл обработки событий от дескрипторов (см. Событийно-ориентированное программирование). Полученные от клиента данные разбираются с помощью конечного автомата. Разобранный запрос последовательно обрабатывается цепочкой модулей, задаваемой конфигурацией. Ответ клиенту формируется в буферах, которые хранят данные либо в памяти, либо указывают на отрезок файла. Буфера объединяются в цепочки, определяющие последовательность, в которой данные будут переданы клиенту. Если операционная система поддерживает эффективные операции ввода-вывода, такие как writev и sendfile, то nginx применяет их по возможности.

Алгоритм работы HTTP сервера выглядит следующим образом[11]:

  1. получить очередной дескриптор из kevent(2);
  2. прочитать данные из файла и записать в socket, используя либо write(2)/read(2), например, так[12]:
while(
   (
      cnt = read(
         read_file_descriptor,
         buffer,
         block_size
      ),
      write(
         socket_file_descriptor,
         buffer,
         count
      ) == cnt
   )
)
   byte_count += count;
либо используя системный вызов sendfile(2), выполняющий те же действия, что приведённый выше код, но в пространстве ядра;
  1. перейти к шагу 1.

Конфигурация 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 на февраль 2018 года, число сайтов, обслуживаемых nginx, превышает 447 миллионов, что делает его третьим по популярности веб-сервером в мире. Доля среди активных сайтов — 21,13 %, что ставит nginx на второе место после веб-сервера Apache[13].

По данным W3Techs, nginx наиболее часто используется на высоконагруженных сайтах[14], занимая первое место по частоте использования среди 100 000 самых посещаемых сайтов в мире — больше половины из них работает на nginx.

По данным российского регистратора REG.RU, nginx является самым популярным веб-сервером доменных зон .ru[15], .рф[16] и .su[17], обслуживая более половины каждого сегмента.

NGINX — самый популярный веб-сервер в России с долей рынка 65,90 %[18].

Среди известных проектов, использующих nginx: Рамблер[19], Яндекс[20], Mail.ru, Хабрахабр[21], Живой Журнал[22], Avito.ru[23], Badoo[24], Ukr.net, Begun, Wordpress.com, SourceForge.net[25], ВКонтакте[26], Qiwi.com[27], Facebook, Groupon, Rutracker.org[28], Netflix[29], Instagram[30], Pinterest[31], Tumblr[32], Superjob.ru[33], HeadHunter[34], 2ГИС[35] и многие другие[13].

Компания Nginx

Nginx Inc.
Тип частная компания
Основание 2011
Расположение  США: Сан-Франциско, Калифорния
Отрасль разработка программного обеспечения (МСОК: 6201)
Продукция Nginx, Nginx Plus
Сайт nginx.com
 Nginx на Викискладе

Для разработки коммерческих продуктов Игорь Сысоев создал в июле 2011 года компанию Nginx. Разработка ведётся в офисе, находящемся в Москве, для продаж создана американская «дочка» — Nginx Inc[36]. В феврале 2012 компания начала предоставлять коммерческий сервис для клиентов[37]. Были введены три пакета технической поддержки — Premium, Advanced и Essential. Эти пакеты включают в себя установку, повышение производительности, конфигурацию, сопровождение программного обеспечения, реализацию, содействие в проектировании и финальной оптимизации.

В декабре 2011 года компания привлекла $3 миллиона от пула инвесторов (в раунде лидировал фонд BV Capital[en]; соинвесторами выступили фонды Runa Capital и семейный фонд Майкла Делла MSD Capital[en][36][38].

В октябре 2013 компания привлекла ещё $10 миллионов. Ведущим инвестором выступил фонд New Enterprise Associates[en]; соинвесторами выступили все фонды предыдущего раунда, а также Аарон Леви, глава Box.com[39].

9 декабря 2014 было объявлено о привлечении дополнительных инвестиций в размере $20 миллионов. Возглавил раунд венчурный фонд New Enterprise Associates при участии фондов Index Ventures[en], Runa Capital, E.ventures (бывший BV Capital) и гендиректора Nginx Гуса Робертсона[40][41][42].

Примечания

  1. ↑ The nginx Open Source Project on Open Hub: Languages Page — 2006.
  2. ↑ http://nginx.org/ru/CHANGES.ru
  3. ↑ http://nginx.org/en/CHANGES
  4. 1 2 Module ngx_http_ssl_module
  5. ↑ Лицензия. Архивировано 7 февраля 2012 года.
  6. ↑ Commercial support
  7. ↑ Буква en:x в английском языке произносится как экс /ˈɛks/
  8. ↑ Лекция «Сравнительный анализ архитектур серверных интернет-приложений для высоких нагрузок», лектор: Игорь Сысоев.
  9. ↑ http://nginx.org/ru/docs/windows.html nginx под Windows
  10. ↑ На http://sysoev.ru/nginx/ можно прочитать: «Я начал разрабатывать nginx весной 2002 года…»
  11. ↑ Доклад Глеба Смирнова (glebius@freebsd.org), разработчика nginx и FreeBSD, на конференции «ruBSD 2014» 13 декабря 2014 года.
  12. ↑ FreeBSD 1.0, 1993 год. Код функции send_data() из src/libexec/ftpd/ftpd.c.
  13. 1 2 February 2018 Web Server Survey (англ.)
  14. ↑ Usage of web servers broken down by ranking (англ.)
  15. ↑ Веб-серверы зоны .RU
  16. ↑ Веб-серверы зоны .РФ
  17. ↑ Веб-серверы зоны .SU
  18. ↑ Статистика российского интернета runfo.ru. www.runfo.ru. Проверено 17 мая 2017.
  19. ↑ Web Technologies used by Rambler.ru (англ.)
  20. ↑ Web Technologies used by Yandex.ru (англ.)
  21. ↑ Web Technologies used by Habrahabr.ru (англ.)
  22. ↑ Web Technologies used by Livejournal.com (англ.)
  23. ↑ Web Technologies used by Avito.ru (англ.)
  24. ↑ Web Technologies used by Badoo.com (англ.)
  25. ↑ GET -ed http://sourceforge.net | grep Server
  26. ↑ Web Technologies used by Vk.com (англ.)
  27. ↑ Web Technologies used by Qiwi.com. w3techs.com. Проверено 20 мая 2016.
  28. ↑ Вкладка «Net» из Firebug’а
  29. ↑ Netflix — Appliance Software
  30. ↑ Web Technologies used by Instagram.com (англ.)
  31. ↑ Web Technologies used by Pinterest.com (англ.)
  32. ↑ Web Technologies used by Tumblr.com (англ.)
  33. ↑ Web Technologies used by Superjob.ru (англ.)
  34. ↑ Web Technologies used by Hh.ru (англ.)
  35. ↑ Web Technologies used by 2gis.ru (англ.)
  36. 1 2 Анастасия Голицына. Nginx получила от фондов $3 млн (англ.). Ведомости (11 October 2011). Проверено 19 октября 2014.
  37. ↑ NGINX начинает предлагать платные услуги своим клиентам (англ.)
  38. ↑ Natasha Starkell. Russian Nginx Raises $3 Million From International Investors (англ.). Techcrunch (11 October 2011). Проверено 19 октября 2014.
  39. ↑ Frederic Lardinois. Nginx Raises $10M Series B Round Led By NEA (англ.). Techcrunch (15 October 2013). Проверено 19 октября 2014.
  40. ↑ Мария Коломыченко. Nginx вышел на третий раунд. Коммерсант (9 декабря 2014). Проверено 9 декабря 2014.
  41. ↑ Frederic Lardinois. Nginx Raises $20M Series B1 Round To Drive International Expansion (англ.). Techcrunch (9 December 2014). Проверено 9 декабря 2014.
  42. ↑ Jordan Novet. Nginx gets $20M, because an open-source web server is just the beginning (англ.). VentureBeat (9 December 2014). Проверено 9 декабря 2014.

См. также

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2026
WikiSort.ru - проект по пересортировке и дополнению контента Википедии