FAQ

Page Discussion Edit History

RuOverview

Revision as of 19:32, 22 September 2010 by MichaelLustfield (Talk)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

nginx [engine x] — это HTTP-сервер и IMAP/POP3-прокси сервер. Я начал разрабатывать nginx весной 2002 года, а осенью 2004 года вышел первый публично доступный релиз. На данный момент nginx работает на нескольких достаточно нагруженных сайтах под FreeBSD и Linux, в том числе на большинстве серверов Рамблера, и я рассматриваю текущую версию nginx-0.4.2 как стабильную с точки зрения надёжности. Однако функциональность некоторых модулей будет меняться, вследствие чего, будут меняться и директивы, поэтому обратной совместимости до версии 1.0.0 не гарантируется. Предыдущие версии в большинстве случаев тоже вполне работоспособны. Об исправленных ошибках и новых возможностях можно узнать в файле изменений.

__Основная функциональность HTTP-сервера:__

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

__Функциональность IMAP/POP3-прокси сервера:__

  • перенаправление пользователя на IMAP/POP3-бэкенд с использованием внешнего HTTP-сервера аутентификации;
  • простая аутентификация (LOGIN, USER/PASS);
  • поддержка SSL и STARTTLS;

__Операционные системы и платформы:__

  • тестировалась сборка и работа на:
FreeBSD 3.x, 4.x, 5.x, 6.x платформа i386; FreeBSD 5.x, 6.x платформа amd64;
Linux 2.2, 2.4, 2.6 платформа i386; Linux 2.4 платформа parisc; Linux 2.6 платформа amd64;
Solaris 8 платформа i386; Solaris 9 платформы i386 и sun4u; Solaris 10 платформа i386;
MacOS X (10.4) платформа ppc;
  • тестировалась сборка на:
FreeBSD 5.x платформа alpha;
NetBSD 2.0 платформа i386;
Tru64 UNIX 5.1b платформа alpha;
HP/UX 11.11 платформа parisc; HP/UX 11.23 платформа ia64;

__Архитектура и масштабируемость:__

  • один главный процесс и несколько рабочих, рабочие процессы работают под непривилегированным пользователем;
  • поддержка 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 неактивных HTTP keep-alive соединений расходуется около 2.5M памяти;
  • минимум операций копирования данных;

__Другие возможности HTTP-сервера:__

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

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

  • встроенный perl;
  • экспериментальная поддержка потоков, реализация потоков для FreeBSD 4.x на базе rfork();
  • экспериментальный модуль, работающий с сокетами через aio_read()/aio_write(), только под FreeBSD;