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-2025
WikiSort.ru - проект по пересортировке и дополнению контента Википедии