nginx

Поделись знанием:
Перейти к: навигация, поиск

nginx
Состояние

активное

Лицензия

BSD-like[1], имеется коммерческая поддержка[2]

К:Википедия:Статьи без изображений (тип: не указан)

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

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





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

nginx — простой, быстрый и надёжный сервер, не перегруженный функциями. Применение nginx целесообразно прежде всего для статических веб-сайтов и как прокси-сервера перед динамическими сайтами.К:Википедия:Статьи без источников (тип: не указан)[источник не указан 4288 дней]

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 сервера выглядит следующим образом[7]:

  1. получить очередной дескриптор из kevent(2);
  2. прочитать данные из файла и записать в socket, используя либо write(2)/read(2), например, так[8]:
while (
   (
      cnt = read(
         read_file_descriptor,
         buffer,
         (u_int) 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 на октябрь 2015 года, число сайтов, обслуживаемых nginx, превышает 146 миллионов, что делает его третьим по популярности веб-сервером в мире. Доля среди активных сайтов — 15,33%, что ставит nginx на второе место после веб-сервера Apache[9].

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

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

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

Компания Nginx

Nginx Inc.
Тип

частная компания

Основание

2011

Расположение

США США: Сан-Франциско, Калифорния

Отрасль

Разработка программного обеспечения (МСОК6201)

Продукция

Nginx, Nginx Plus

Сайт

[nginx.com/ om]

К:Компании, основанные в 2011 году

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

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

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

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

Напишите отзыв о статье "Nginx"

Примечания

  1. [nginx.org/LICENSE Лицензия]. [www.webcitation.org/65HCw0nzP Архивировано из первоисточника 7 февраля 2012].
  2. [nginx.com/support.html Commercial support]
  3. Буква en:x в английском языке произносится как экс /ˈɛks/
  4. [esyr.name/video/security/security_11_11_03.raw.ogv Лекция «Сравнительный анализ архитектур серверных интернет-приложений для высоких нагрузок», лектор: Игорь Сысоев].
  5. nginx.org/ru/docs/windows.html nginx под Windows
  6. На sysoev.ru/nginx/ можно прочитать: «Я начал разрабатывать nginx весной 2002 года…»
  7. [events.yandex.ru/lib/talks/2682/ Доклад] Глеба Смирнова (glebius@freebsd.org), разработчика nginx и FreeBSD, на конференции «ruBSD 2014» 13 декабря 2014 года.
  8. FreeBSD 1.0, 1993 год. Код функции send_data() из src/libexec/ftpd/ftpd.c.
  9. 1 2 [news.netcraft.com/archives/2015/10/16/october-2015-web-server-survey.html October 2015 Web Server Survey] (англ.)
  10. [w3techs.com/technologies/cross/web_server/ranking Usage of web servers broken down by ranking] (англ.)
  11. [statonline.ru/metrics/web_server_soft?tld=ru Веб-серверы зоны .RU]
  12. [statonline.ru/metrics/web_server_soft?tld=rf Веб-серверы зоны .РФ]
  13. [statonline.ru/metrics/web_server_soft?tld=su Веб-серверы зоны .SU]
  14. [w3techs.com/sites/info/rambler.ru Web Technologies used by Rambler.ru] (англ.)
  15. [w3techs.com/sites/info/yandex.ru Web Technologies used by Yandex.ru] (англ.)
  16. [w3techs.com/sites/info/habrahabr.ru Web Technologies used by Habrahabr.ru] (англ.)
  17. [w3techs.com/sites/info/livejournal.com Web Technologies used by Livejournal.com] (англ.)
  18. [w3techs.com/sites/info/avito.ru Web Technologies used by Avito.ru] (англ.)
  19. [w3techs.com/sites/info/badoo.com Web Technologies used by Badoo.com] (англ.)
  20. GET -ed sourceforge.net | grep Server
  21. [w3techs.com/sites/info/vk.com Web Technologies used by Vk.com] (англ.)
  22. [w3techs.com/sites/info/qiwi.com Web Technologies used by Qiwi.com]. w3techs.com. Проверено 20 мая 2016.
  23. Вкладка «Net» из Firebug’а
  24. [signup.netflix.com/openconnect/software Netflix - Watch TV Shows Online, Watch Movies Online]
  25. [w3techs.com/sites/info/instagram.com Web Technologies used by Instagram.com] (англ.)
  26. [w3techs.com/sites/info/pinterest.com Web Technologies used by Pinterest.com] (англ.)
  27. [w3techs.com/sites/info/tumblr.com Web Technologies used by Tumblr.com] (англ.)
  28. [w3techs.com/sites/info/superjob.ru Web Technologies used by Superjob.ru] (англ.)
  29. [w3techs.com/sites/info/hh.ru Web Technologies used by Hh.ru] (англ.)
  30. w3techs.com/sites/info/2gis.ru (англ.)
  31. 1 2 Анастасия Голицына. [www.vedomosti.ru/tech/news/1389193/server_dlya_majkla_della Nginx получила от фондов $3 млн] (англ.). Ведомости (11 October 2011). Проверено 19 октября 2014.
  32. [nginx.com/news/nginx-commercial-support.html NGINX начинает предлагать платные услуги своим клиентам] (англ.)
  33. Natasha Starkell. [techcrunch.com/2011/10/11/russian-nginx-raises-3-million-from-international-investors/ Russian Nginx Raises $3 Million From International Investors] (англ.). Techcrunch (11 October 2011). Проверено 19 октября 2014.
  34. Frederic Lardinois. [techcrunch.com/2013/10/15/nginx-raises-10m-series-b-round-led-by-nea/ Nginx Raises $10M Series B Round Led By NEA] (англ.). Techcrunch (15 October 2013). Проверено 19 октября 2014.
  35. Мария Коломыченко. [www.kommersant.ru/doc/2629475 Nginx вышел на третий раунд] (рус.). Коммерсант (9 декабря 2014). Проверено 9 декабря 2014.
  36. Frederic Lardinois. [techcrunch.com/2014/12/09/nginx-raises-20m-series-b1-round-to-drive-international-expansion/ Nginx Raises $20M Series B1 Round To Drive International Expansion] (англ.). Techcrunch (9 December 2014). Проверено 9 декабря 2014.
  37. Jordan Novet. [venturebeat.com/2014/12/09/nginx-funding/ Nginx gets $20M, because an open-source web server is just the beginning] (англ.). VentureBeat (9 December 2014). Проверено 9 декабря 2014.

См. также

Ссылки

  • [nginx.org/ru/ Официальный сайт.]  (рус.)
  • [nginx.org/ Английская версия.]  (англ.)
  • [wiki.nginx.org/Main Wiki-nginx]  (англ.)
  • [mailman.nginx.org/mailman/listinfo/nginx-ru Лист рассылки nginx]  (рус.)

Отрывок, характеризующий Nginx



Вернувшись в полк и передав командиру, в каком положении находилось дело Денисова, Ростов с письмом к государю поехал в Тильзит.
13 го июня, французский и русский императоры съехались в Тильзите. Борис Друбецкой просил важное лицо, при котором он состоял, о том, чтобы быть причислену к свите, назначенной состоять в Тильзите.
– Je voudrais voir le grand homme, [Я желал бы видеть великого человека,] – сказал он, говоря про Наполеона, которого он до сих пор всегда, как и все, называл Буонапарте.
– Vous parlez de Buonaparte? [Вы говорите про Буонапарта?] – сказал ему улыбаясь генерал.
Борис вопросительно посмотрел на своего генерала и тотчас же понял, что это было шуточное испытание.
– Mon prince, je parle de l'empereur Napoleon, [Князь, я говорю об императоре Наполеоне,] – отвечал он. Генерал с улыбкой потрепал его по плечу.
– Ты далеко пойдешь, – сказал он ему и взял с собою.
Борис в числе немногих был на Немане в день свидания императоров; он видел плоты с вензелями, проезд Наполеона по тому берегу мимо французской гвардии, видел задумчивое лицо императора Александра, в то время как он молча сидел в корчме на берегу Немана, ожидая прибытия Наполеона; видел, как оба императора сели в лодки и как Наполеон, приставши прежде к плоту, быстрыми шагами пошел вперед и, встречая Александра, подал ему руку, и как оба скрылись в павильоне. Со времени своего вступления в высшие миры, Борис сделал себе привычку внимательно наблюдать то, что происходило вокруг него и записывать. Во время свидания в Тильзите он расспрашивал об именах тех лиц, которые приехали с Наполеоном, о мундирах, которые были на них надеты, и внимательно прислушивался к словам, которые были сказаны важными лицами. В то самое время, как императоры вошли в павильон, он посмотрел на часы и не забыл посмотреть опять в то время, когда Александр вышел из павильона. Свидание продолжалось час и пятьдесят три минуты: он так и записал это в тот вечер в числе других фактов, которые, он полагал, имели историческое значение. Так как свита императора была очень небольшая, то для человека, дорожащего успехом по службе, находиться в Тильзите во время свидания императоров было делом очень важным, и Борис, попав в Тильзит, чувствовал, что с этого времени положение его совершенно утвердилось. Его не только знали, но к нему пригляделись и привыкли. Два раза он исполнял поручения к самому государю, так что государь знал его в лицо, и все приближенные не только не дичились его, как прежде, считая за новое лицо, но удивились бы, ежели бы его не было.
Борис жил с другим адъютантом, польским графом Жилинским. Жилинский, воспитанный в Париже поляк, был богат, страстно любил французов, и почти каждый день во время пребывания в Тильзите, к Жилинскому и Борису собирались на обеды и завтраки французские офицеры из гвардии и главного французского штаба.
24 го июня вечером, граф Жилинский, сожитель Бориса, устроил для своих знакомых французов ужин. На ужине этом был почетный гость, один адъютант Наполеона, несколько офицеров французской гвардии и молодой мальчик старой аристократической французской фамилии, паж Наполеона. В этот самый день Ростов, пользуясь темнотой, чтобы не быть узнанным, в статском платье, приехал в Тильзит и вошел в квартиру Жилинского и Бориса.
В Ростове, также как и во всей армии, из которой он приехал, еще далеко не совершился в отношении Наполеона и французов, из врагов сделавшихся друзьями, тот переворот, который произошел в главной квартире и в Борисе. Все еще продолжали в армии испытывать прежнее смешанное чувство злобы, презрения и страха к Бонапарте и французам. Еще недавно Ростов, разговаривая с Платовским казачьим офицером, спорил о том, что ежели бы Наполеон был взят в плен, с ним обратились бы не как с государем, а как с преступником. Еще недавно на дороге, встретившись с французским раненым полковником, Ростов разгорячился, доказывая ему, что не может быть мира между законным государем и преступником Бонапарте. Поэтому Ростова странно поразил в квартире Бориса вид французских офицеров в тех самых мундирах, на которые он привык совсем иначе смотреть из фланкерской цепи. Как только он увидал высунувшегося из двери французского офицера, это чувство войны, враждебности, которое он всегда испытывал при виде неприятеля, вдруг обхватило его. Он остановился на пороге и по русски спросил, тут ли живет Друбецкой. Борис, заслышав чужой голос в передней, вышел к нему навстречу. Лицо его в первую минуту, когда он узнал Ростова, выразило досаду.
– Ах это ты, очень рад, очень рад тебя видеть, – сказал он однако, улыбаясь и подвигаясь к нему. Но Ростов заметил первое его движение.
– Я не во время кажется, – сказал он, – я бы не приехал, но мне дело есть, – сказал он холодно…
– Нет, я только удивляюсь, как ты из полка приехал. – «Dans un moment je suis a vous», [Сию минуту я к твоим услугам,] – обратился он на голос звавшего его.
– Я вижу, что я не во время, – повторил Ростов.
Выражение досады уже исчезло на лице Бориса; видимо обдумав и решив, что ему делать, он с особенным спокойствием взял его за обе руки и повел в соседнюю комнату. Глаза Бориса, спокойно и твердо глядевшие на Ростова, были как будто застланы чем то, как будто какая то заслонка – синие очки общежития – были надеты на них. Так казалось Ростову.
– Ах полно, пожалуйста, можешь ли ты быть не во время, – сказал Борис. – Борис ввел его в комнату, где был накрыт ужин, познакомил с гостями, назвав его и объяснив, что он был не статский, но гусарский офицер, его старый приятель. – Граф Жилинский, le comte N.N., le capitaine S.S., [граф Н.Н., капитан С.С.] – называл он гостей. Ростов нахмуренно глядел на французов, неохотно раскланивался и молчал.
Жилинский, видимо, не радостно принял это новое русское лицо в свой кружок и ничего не сказал Ростову. Борис, казалось, не замечал происшедшего стеснения от нового лица и с тем же приятным спокойствием и застланностью в глазах, с которыми он встретил Ростова, старался оживить разговор. Один из французов обратился с обыкновенной французской учтивостью к упорно молчавшему Ростову и сказал ему, что вероятно для того, чтобы увидать императора, он приехал в Тильзит.
– Нет, у меня есть дело, – коротко ответил Ростов.
Ростов сделался не в духе тотчас же после того, как он заметил неудовольствие на лице Бориса, и, как всегда бывает с людьми, которые не в духе, ему казалось, что все неприязненно смотрят на него и что всем он мешает. И действительно он мешал всем и один оставался вне вновь завязавшегося общего разговора. «И зачем он сидит тут?» говорили взгляды, которые бросали на него гости. Он встал и подошел к Борису.
– Однако я тебя стесняю, – сказал он ему тихо, – пойдем, поговорим о деле, и я уйду.
– Да нет, нисколько, сказал Борис. А ежели ты устал, пойдем в мою комнатку и ложись отдохни.
– И в самом деле…
Они вошли в маленькую комнатку, где спал Борис. Ростов, не садясь, тотчас же с раздраженьем – как будто Борис был в чем нибудь виноват перед ним – начал ему рассказывать дело Денисова, спрашивая, хочет ли и может ли он просить о Денисове через своего генерала у государя и через него передать письмо. Когда они остались вдвоем, Ростов в первый раз убедился, что ему неловко было смотреть в глаза Борису. Борис заложив ногу на ногу и поглаживая левой рукой тонкие пальцы правой руки, слушал Ростова, как слушает генерал доклад подчиненного, то глядя в сторону, то с тою же застланностию во взгляде прямо глядя в глаза Ростову. Ростову всякий раз при этом становилось неловко и он опускал глаза.
– Я слыхал про такого рода дела и знаю, что Государь очень строг в этих случаях. Я думаю, надо бы не доводить до Его Величества. По моему, лучше бы прямо просить корпусного командира… Но вообще я думаю…
– Так ты ничего не хочешь сделать, так и скажи! – закричал почти Ростов, не глядя в глаза Борису.
Борис улыбнулся: – Напротив, я сделаю, что могу, только я думал…
В это время в двери послышался голос Жилинского, звавший Бориса.
– Ну иди, иди, иди… – сказал Ростов и отказавшись от ужина, и оставшись один в маленькой комнатке, он долго ходил в ней взад и вперед, и слушал веселый французский говор из соседней комнаты.


Ростов приехал в Тильзит в день, менее всего удобный для ходатайства за Денисова. Самому ему нельзя было итти к дежурному генералу, так как он был во фраке и без разрешения начальства приехал в Тильзит, а Борис, ежели даже и хотел, не мог сделать этого на другой день после приезда Ростова. В этот день, 27 го июня, были подписаны первые условия мира. Императоры поменялись орденами: Александр получил Почетного легиона, а Наполеон Андрея 1 й степени, и в этот день был назначен обед Преображенскому батальону, который давал ему батальон французской гвардии. Государи должны были присутствовать на этом банкете.
Ростову было так неловко и неприятно с Борисом, что, когда после ужина Борис заглянул к нему, он притворился спящим и на другой день рано утром, стараясь не видеть его, ушел из дома. Во фраке и круглой шляпе Николай бродил по городу, разглядывая французов и их мундиры, разглядывая улицы и дома, где жили русский и французский императоры. На площади он видел расставляемые столы и приготовления к обеду, на улицах видел перекинутые драпировки с знаменами русских и французских цветов и огромные вензеля А. и N. В окнах домов были тоже знамена и вензеля.
«Борис не хочет помочь мне, да и я не хочу обращаться к нему. Это дело решенное – думал Николай – между нами всё кончено, но я не уеду отсюда, не сделав всё, что могу для Денисова и главное не передав письма государю. Государю?!… Он тут!» думал Ростов, подходя невольно опять к дому, занимаемому Александром.
У дома этого стояли верховые лошади и съезжалась свита, видимо приготовляясь к выезду государя.
«Всякую минуту я могу увидать его, – думал Ростов. Если бы только я мог прямо передать ему письмо и сказать всё, неужели меня бы арестовали за фрак? Не может быть! Он бы понял, на чьей стороне справедливость. Он всё понимает, всё знает. Кто же может быть справедливее и великодушнее его? Ну, да ежели бы меня и арестовали бы за то, что я здесь, что ж за беда?» думал он, глядя на офицера, всходившего в дом, занимаемый государем. «Ведь вот всходят же. – Э! всё вздор. Пойду и подам сам письмо государю: тем хуже будет для Друбецкого, который довел меня до этого». И вдруг, с решительностью, которой он сам не ждал от себя, Ростов, ощупав письмо в кармане, пошел прямо к дому, занимаемому государем.