Что такое nginx?

nginx - маленький и легкий, но очень мощный и эффективный web-сервер, созданный Игорем Сысоевым для использования на серверах компании Рамблер и любезно предоставленный им для использования open-source сообществом. Этот сервер может использоваться как самостоятельный HTTP-сервер или как reverse proxy перед Апачем или любым другим "тяжелым" веб сервером для снижения нагрузки на backend-сервере от большого количества одновременных HTTP-сессий. Как самостоятельный сервер, nginx без проблем выдерживает огромные нагрузки при раздаче статического контента (images, html-pages и т.д.).


Основные возможности nginx:

 

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



Дополнительные возможности сервера:

 

  • виртуальные сервера, определяемые по ip-адресу и имени;
  • поддержка keep-alive и pipelined соединений;
  • гибкость конфигурации на уровне Apache, настройка таймаутов и размеров буферов;
  • изменение настроек и обновление исполняемого файла без перерыва в обслуживании клиентов;
  • настройка форматов логов, быстрая ротация логов;
  • специальные страницы для ошибок 400-599;
  • изменение URI с помощью регулярных выражений;
  • выполнение разных функций в зависимости от адреса клиента;
  • ограничение доступа в зависимости от адреса клиента и по паролю (Basic аутентификация);
  • ограничение скорости отдачи ответов;



Основные архитектурные особенности nginx:

 

  • один главный процесс и несколько рабочих, рабочие процессы работают под непривилегированным пользователем;
  • поддержка kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), select и poll;
  • использование возможностей, предоставляемых kqueue, таких как EV_CLEAR, EV_DISABLE (для временного выключения события), NOTE_LOWAT, EV_EOF, число доступных данных, коды ошибок;
  • поддержка sendfile (FreeBSD 3.1+), sendfile (Linux 2.2+), sendfile64 (Linux 2.4.21+) и sendfilev (Solaris 8 7/01+);
  • поддержка accept-фильтров (FreeBSD 4.1+) и TCP_DEFER_ACCEPT (Linux 2.4+);
  • на 10 000 неактивных keep-alive соединений расходуется около 2.5M памяти;
  • минимум операций копирования данных.



Как экспериментальная возможность в nginx включен интерпретатор языка perl для программирования особо сложной логики обработки запросов.

Read 232 times
Login to post comments