Вопрос-Ответ
Вопрос:
Что такое 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 для программирования особо сложной логики обработки запросов.
« Вернуться к списку вопросов
|