Веб-сервер nginx-0.7.59
26.05.2009

Статус версии 0.7.x изменён на стабильный.

nginx (engine x) — свободный Веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах и теперь также под Microsoft Windows. Разрабатывается Игорем Сысоевым с 2002-го года.

Версию nginx-0.7.59 разработчик объявил стабильной с точки зрения надёжности. Однако, по словам автора, функциональность некоторых модулей будет меняться, вследствие чего будут меняться и директивы. Поэтому обратной совместимости до версии 1.0.0 не гарантируется.

Об исправленных ошибках и новых возможностях можно узнать в файле изменений.

Во время разработки версии 0.7.x, среди прочего, появились:

  • кэширование проксированных и FastCGI-серверов;
  • директива try_files;
  • поддержка выделений в регулярных выражениях в директивах location и server_name и ссылок на эти выделения во всех директивах, поддерживающих переменные, например, в директиве alias;
  • два фильтра — XSLT и преобразования изображений  в форматах JPEG, GIF и PNG;
  • предварительная поддержка IPv6;
  • nginx/Windows работает с Win32 API (не эмуляция Cygwin). В качестве метода обработки соединений используется select, поэтому не стоит ожидать высокой производительности и масштабируемости: пока это бета-версия. На данный момент доступна практически вся функциональность, что и в nginx/Unix, за исключением XSLT-фильтра, фильтра изображений и встроенного perl'а. nginx/Windows работает как обычное приложение (не сервис).

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

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

Функциональность почтового прокси-сервера:

  • IMAP и POP3: перенаправление пользователя на IMAP или POP3-бэкенд с использованием внешнего HTTP-сервера аутентификации;
  • SMTP: проверка пользователя с помощью внешнего HTTP-сервера аутентификации и перенаправление соединения на внутренний SMTP-сервер;
  • методы аутентификации:
    • POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
    • IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
    • SMTP: AUTH LOGI/ PLAIN/CRAM-MD5;
  • поддержка SSL;
  • поддержка STARTTLS и STLS;

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

  • FreeBSD 3  — 7 платформа i386;
  • FreeBSD 3  — 7 платформа amd64;
  • Linux 2.2  — 2.6 платформа i386;
  • Linux 2.6 платформа amd64;
  • Solaris 9 платформы i386 и sun4u;
  • Solaris 10 платформы i386, amd64 и sun4v;
  • MacOS X платформы ppc, i386;
  • Windows XP, Windows Server 2003;

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

  • один главный процесс и несколько рабочих, рабочие процессы работают под непривилегированным пользователем;
  • поддержка kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select и poll;
  • использование возможностей, предоставляемых kqueue, таких как EV_CLEAR, EV_DISABLE (для временного выключения события), NOTE_LOWAT, EV_EOF, число доступных данных, коды ошибок;
  • поддержка sendfile (FreeBSD 3.1+, Linux 2.2.+, Mac OS X 10.5+), 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 памяти;
  • минимум операций копирования данных;