| 1 |
nginx [engine x] — это HTTP-сервер и почтовый прокси-сервер. Я начал разрабатывать nginx весной 2002 года, а осенью 2004 года вышел первый публично доступный релиз. В мае 2009 года nginx использовался на 3% самых посещаемых сайтов в мире. |
| 2 |
|
| 3 |
Версию nginx-0.7.61 я рассматриваю как стабильную с точки зрения надёжности. Однако функциональность некоторых модулей будет меняться, вследствие чего, будут меняться и директивы, поэтому обратной совместимости до версии 1.0.0 не гарантируется. Предыдущие версии в большинстве случаев тоже вполне работоспособны. Об исправленных ошибках и новых возможностях можно узнать в файле изменений. |
| 4 |
|
| 5 |
Основная функциональность HTTP-сервера: |
| 6 |
|
| 7 |
* обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов; |
| 8 |
* акселерированное проксирование с кэшированием, простое распределение нагрузки и отказоустойчивость; |
| 9 |
* акселерированная поддержка удалённых FastCGI серверов с кэшированием, простое распределение нагрузки и отказоустойчивость; |
| 10 |
* модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, XSLT-фильтр, SSI-фильтр; несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно. |
| 11 |
* поддержка SSL и расширения TLS SNI; |
| 12 |
|
| 13 |
Функциональность почтового прокси-сервера: |
| 14 |
|
| 15 |
* IMAP и POP3: перенаправление пользователя на IMAP или POP3-бэкенд с использованием внешнего HTTP-сервера аутентификации; |
| 16 |
* SMTP: проверка пользователя с помощью внешнего HTTP-сервера аутентификации и перенаправление соединения на внутренний SMTP-сервер; |
| 17 |
* методы аутентификации: |
| 18 |
o POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5; |
| 19 |
o IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5; |
| 20 |
o SMTP: AUTH LOGI/ PLAIN/CRAM-MD5; |
| 21 |
* поддержка SSL; |
| 22 |
* поддержка STARTTLS и STLS; |
| 23 |
|
| 24 |
Операционные системы и платформы: |
| 25 |
|
| 26 |
* тестировалась сборка и работа на: |
| 27 |
FreeBSD 3 — 7 платформа i386; FreeBSD 3 — 7 платформа amd64; |
| 28 |
Linux 2.2 — 2.6 платформа i386; Linux 2.6 платформа amd64; |
| 29 |
Solaris 9 платформы i386 и sun4u; Solaris 10 платформы i386, amd64 и sun4v; |
| 30 |
MacOS X платформы ppc, i386; |
| 31 |
Windows XP, Windows Server 2003. |
| 32 |
|
| 33 |
Архитектура и масштабируемость: |
| 34 |
|
| 35 |
* один главный процесс и несколько рабочих, рабочие процессы работают под непривилегированным пользователем; |
| 36 |
* поддержка 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; |
| 37 |
* использование возможностей, предоставляемых kqueue, таких как EV_CLEAR, EV_DISABLE (для временного выключения события), NOTE_LOWAT, EV_EOF, число доступных данных, коды ошибок; |
| 38 |
* поддержка sendfile (FreeBSD 3.1+, Linux 2.2.+, Mac OS X 10.5+), sendfile64 (Linux 2.4.21+) и sendfilev (Solaris 8 7/01+); |
| 39 |
* поддержка accept-фильтров (FreeBSD 4.1+) и TCP_DEFER_ACCEPT (Linux 2.4+); |
| 40 |
* на 10 000 неактивных HTTP keep-alive соединений расходуется около 2.5M памяти; |
| 41 |
* минимум операций копирования данных; |
| 42 |
|
| 43 |
Другие возможности HTTP-сервера: |
| 44 |
|
| 45 |
* виртуальные сервера, определяемые по ip-адресу и имени; |
| 46 |
* поддержка keep-alive и pipelined соединений; |
| 47 |
* гибкость конфигурации на уровне Apache, настройка таймаутов и размеров буферов; |
| 48 |
* изменение настроек и обновление исполняемого файла без перерыва в обслуживании клиентов; |
| 49 |
* настройка форматов логов, быстрая ротация логов; |
| 50 |
* специальные страницы для ошибок 4xx-5xx; |
| 51 |
* изменение URI с помощью регулярных выражений; |
| 52 |
* выполнение разных функций в зависимости от адреса клиента; |
| 53 |
* ограничение доступа в зависимости от адреса клиента и по паролю (Basic аутентификация); |
| 54 |
* методы PUT, DELETE, MKCOL, COPY и MOVE; |
| 55 |
* FLV streaming; |
| 56 |
* ограничение скорости отдачи ответов; |
| 57 |
* ограничение числа одновременных соединений и запросов; |
| 58 |
|
| 59 |
Экспериментальные возможности: |
| 60 |
|
| 61 |
* встроенный perl; |
| 62 |
* экспериментальный модуль, работающий с сокетами через aio_read()/aio_write(), только под FreeBSD; |
| 63 |
|
| 64 |
(C) Игорь Сысоев |