nginx
nginx ("engine x") — это HTTP-сервер, обратный прокси сервер с поддержкой кеширования и балансировки нагрузки, TCP/UDP прокси-сервер, а также почтовый прокси-сервер. Изначально разработан и распространяется под лицензией BSD из 2 пунктов.
nginx известен своей исключительной гибкостью, высокой производительностью и минимальным потреблением ресурсов. Он также:
- самый популярный веб-сервер в мире [];
- один из самых востребованных [];
- активно используется в , включая наш собственный.
Корпоративное распространение, коммерческая поддержка и тренинги осуществляются компанией
Основная функциональность HTTP-сервера
- Обслуживание статических запросов, , , ;
- , ;
- Акселерированная поддержка , , и серверов с кэшированием, ;
- Модульность, фильтры, в том числе , byte-ranges (докачка), chunked ответы, , , ; несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI/uwsgi/SCGI, выполняются параллельно;
- ;
- Поддержка с приоритизацией на основе весов и зависимостей;
- Поддержка .
Другие возможности HTTP-сервера
- , определяемые по IP-адресу и имени;
- Поддержка и pipelined соединений;
- , , , ;
- для ошибок 3xx-5xx;
- rewrite-модуль: ;
- в зависимости от ;
- Ограничение доступа в зависимости от , и по ;
- Проверка ;
- ;
- и стриминг;
- ;
- Ограничение числа одновременных и с одного адреса;
- ;
- ;
- ;
- Встроенный ;
- сценарный язык .
Функциональность почтового прокси-сервера
- Перенаправление пользователя на - или -сервер с использованием внешнего HTTP-сервера ;
- Проверка пользователя с помощью внешнего HTTP-сервера и перенаправление соединения на внутренний -сервер;
-
Методы аутентификации:
- : USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
- : LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
- : AUTH LOGIN/PLAIN/CRAM-MD5;
- Поддержка ;
- Поддержка .
Функциональность TCP/UDP прокси-сервера
- Поддержка и расширения TLS для TCP;
- ;
- Ограничение доступа в зависимости от ;
- Выполнение разных функций в зависимости от ;
- Ограничение числа одновременных с одного адреса;
- , , , ;
- ;
- ;
- сценарный язык .
Архитектура и масштабируемость
- Один главный и несколько рабочих процессов, рабочие процессы работают под непривилегированным пользователем;
- ;
- и без перерыва в обслуживании клиентов;
-
kqueue (FreeBSD 4.1+),
epoll (Linux 2.6+),
/dev/poll
(Solaris 7 11/99+), event ports(Solaris 10), select и poll; - Использование возможностей, предоставляемых kqueue, таких как EV_CLEAR, EV_DISABLE (для временного выключения события), NOTE_LOWAT, EV_EOF, число доступных данных, коды ошибок;
- Использование возможностей, предоставляемых epoll, таких как EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+) и EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+);
-
Поддержка sendfile (FreeBSD 3.1+, Linux 2.2+, macOS 10.5+),
sendfile64 (Linux 2.4.21+) и sendfilev
(Solaris 8 7/01+); - Поддержка (FreeBSD 4.3+, Linux 2.6.22+);
- Поддержка (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);
- accept-фильтров (FreeBSD 4.1+, NetBSD 5.0+) и TCP_DEFER_ACCEPT (Linux 2.4+);
-
На
10 000 неактивных HTTP keep-alive соединений расходуется около 2.5M памяти; - Минимум операций копирования данных.
Протестированные ОС и платформы
- FreeBSD 3 — 12 / i386; FreeBSD 5 — 12 / amd64; FreeBSD 11 / ppc; FreeBSD 12 / ppc64;
- Linux 2.2 — 4 / i386; Linux 2.6 — 5 / amd64; Linux 3 — 4 / armv6l, armv7l, aarch64, ppc64le; Linux 4 — 5 / s390x;
- Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v; Solaris 11 / x86;
- AIX 7.1 / powerpc;
- HP-UX 11.31 / ia64;
- macOS / ppc, i386, x86_64;
- Windows XP, Windows Server 2003, Windows 7, Windows 10, Windows 11.