nginx [engine x] — это HTTP-сервер и обратный прокси-сервер,
а также почтовый прокси-сервер,
написанный Игорем Сысоевым.
Уже длительное время он обслуживает
серверы многих высоконагруженных российских сайтов, таких как
Яндекс,
Mail.Ru,
ВКонтакте и
Рамблер.
Согласно статистике Netcraft nginx обслуживал или проксировал
12.77%
самых нагруженных сайтов в январе 2013 года.
Вот некоторые примеры успешного внедрения nginx (тексты на английском языке):
Netflix,
Wordpress.com,
FastMail.FM.
Исходные тексты и документация распространяются под
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+, NetBSD 5.0+) и TCP_DEFER_ACCEPT (Linux 2.4+);
-
На 10 000 неактивных HTTP keep-alive соединений расходуется
около 2.5M памяти;
-
Минимум операций копирования данных.
Протестированные ОС и платформы
-
FreeBSD 3 — 10 / i386; FreeBSD 5 — 10 / amd64;
-
Linux 2.2 — 3 / i386; Linux 2.6 — 3 / amd64;
-
Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
-
AIX 7.1 / powerpc;
-
HP-UX 11.31 / ia64;
-
Mac OS X / ppc, i386;
-
Windows XP, Windows Server 2003.
|