nginx

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

()

Мастер-класс Игоря Сысоева «nginx: продукт и компания»

()

Мастер-класс по настройке nginx для ускорения сайтов от Николая Лавлинского

nginx (engine x, произносится как э́нджин-э́кс, engine — движок, X — ещё один) — свободный веб-сервер. В своё время был написан отечественным программистом Игорем Сысоевым для компании Rambler, но поддерживается и развивается до сих пор. Часто именуется «лучшим веб-сервером всех времен и народов». Является конкурентом веб-сервера Apache.

Стоит сразу отметить, что nginx не является веб-приложением или языком программирования, подобно PHP. nginx — это веб-сервер, его задача принимать запросы от клиентов, передавать их веб-приложению (например, PHP), получать ответ от веб-приложения и отдавать его пользователю. Необходимость в таком промежуточном звене возникает из-за сложности разбора запросов, посылаемых клиентами, и ради минимизации накладных расходов, возникающих при увеличении числа клиентов. Кроме того, вынесение куска функциональности в отдельную программу соответствует принципу модульности, эксплуатируемому в UNIX-системах.

[править] Преимущества и недостатки nginx

Преимущества nginx:

  • шифрование, сжатие, поддержка многих сайтов на одном IP-адресе и прочие возможности, доступные в большинстве веб-серверов;
  • межсистемность, малый размер, простота конфигурации, масштабируемость;
  • использование преимущества от асинхронной системы ввода-вывода, что на практике означает экономию ресурсов системы и выгодно сказывается в случае больших нагрузок
  • встроенная устойчивость к многим видам DoS и DDos атак.

Недостатки nginx:

  • встроенная поддержка PHP. Лечится подключением PHP через fastcgi. Неплохо работает решение php-fpm;
  • нет встроенной поддержки технологии Web-сокет, хотя при желании Web-сокет можно использовать (можно поставить перед nginx ещё один front-end, поддерживающий Web-сокет или использовать расширение udp_proxy для nginx);
  • появился позже Apache, из-за чего не признается многими олдфагами.

В Apache по умолчанию тратится по одному процессу (или потоку выполнения) операционной системы на каждый запрос. Или же заранее запускается некоторое количество процессов-рабочих, обрабатывающих запросы. Число запросов, по которым одновременно отдается или принимается информация, ограничено количеством этих рабочих. Так как каждый рабочий тратит ресурсы системы, их число обычно невелико.

Асинхронный ввод-вывод позволяет nginx экономить на этих запросах, в которых происходит передача информации. 10 000 клиентов, скачивающих файл на очень медленной скорости не страшны для nginx, но способны повергнуть в ужас Apache. Соответственно, nginx идеально подходит для отдачи статического контента. Конечно, для Apache есть решения, позволяющие справляться с большим числом одновременных запросов, но их ещё надо прикручивать, а в nginx это есть изначально.

Так или иначе, но nginx используется на значительном количестве веб-серверов по всему миру. Нередко можно встретить конфигацию nginx+Apache, когда nginx используется в качестве сервера-балансировщика, обратно проксирующего запросы на один или несколько Apache-серверов. nginx при этом имеет дело с дикой стихией запросов из внешнего мира, а Apache уже обрабатывает сами запросы.

[править] Ссылки

Nginx относится к теме «Программное обеспечение»   ±