nginx [engine x] — это HTTP-сервер и обратный прокси-сервер,
а также почтовый прокси-сервер,
написанный Игорем Сысоевым.
Уже длительное время он обслуживает
серверы многих высоконагруженных российских сайтов, таких как
Яндекс,
Mail.Ru,
ВКонтакте и
Рамблер.
Согласно статистике Netcraft nginx обслуживал или проксировал
8.49%
самых нагруженных сайтов в январе 2012 года.
Вот некоторые примеры успешного внедрения nginx (тексты на английском языке):
FastMail.FM,
Wordpress.com.
Исходные тексты распространяются под
BSD-подобной лицензией из 2 пунктов.
Основная функциональность HTTP-сервера
-
Обслуживание статических запросов,
индексных
файлов,
автоматическое
создание списка файлов,
кэш дескрипторов открытых файлов;
-
Акселерированное
обратное проксирование с кэшированием,
простое
распределение нагрузки и отказоустойчивость;
-
Акселерированная поддержка
FastCGI,
uwsgi, SCGI и
memcached
серверов с кэшированием,
простое
распределение нагрузки и отказоустойчивость;
-
Модульность, фильтры, в том числе
сжатие (gzip),
byte-ranges (докачка),
chunked ответы,
XSLT-фильтр,
SSI-фильтр,
преобразование
изображений;
несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре
через прокси или FastCGI, выполняются параллельно;
-
Поддержка SSL и
расширения TLS SNI.
Другие возможности HTTP-сервера
Функциональность почтового прокси-сервера
-
Перенаправление пользователя на IMAP или POP3-бэкенд с использованием
внешнего HTTP-сервера аутентификации;
-
Проверка пользователя с помощью внешнего HTTP-сервера аутентификации
и перенаправление соединения на внутренний SMTP-сервер;
-
Методы аутентификации:
-
POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
-
IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
-
SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
-
Поддержка SSL;
-
Поддержка STARTTLS и STLS.
Архитектура и масштабируемость
-
Один главный и несколько рабочих процессов, рабочие процессы работают под
непривилегированным пользователем;
-
Поддержка
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+);
-
Поддержка
файлового
AIO (FreeBSD 4.3+, Linux 2.6.22+);
-
Поддержка
DIRECTIO
(FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, Mac OS X);
-
Поддержка
accept-фильтров (FreeBSD 4.1+) и TCP_DEFER_ACCEPT (Linux 2.4+);
-
На 10 000 неактивных HTTP keep-alive соединений расходуется
около 2.5M памяти;
-
Минимум операций копирования данных.
Протестированные ОС и платформы
-
FreeBSD 3 — 10 / i386; FreeBSD 5 — 10 / amd64;
-
Linux 2.2 — 2.6 / i386; Linux 2.6 / amd64;
-
Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
-
AIX 7.1 / powerpc
-
Mac OS X / ppc, i386;
-
Windows XP, Windows Server 2003.
|