nginx Join us for the first quarterly NGINX Community Call on July 22nd to connect and discuss NGINX development. english русский новости [en] об nginx скачать безопасность [en] документация faq книги [en] сообщество компания x.com blog njs ingress controller gateway fabric nginxОсновная функциональность HTTP-сервера Другие возможности HTTP-сервера Функциональность почтового прокси-сервера Функциональность TCP/UDP прокси-сервера Архитектура и масштабируемость Протестированные ОС и платформы nginx ("engine x") — это HTTP-сервер, обратный прокси сервер с поддержкой кеширования и балансировки нагрузки, TCP/UDP прокси-сервер, а также почтовый прокси-сервер. Изначально разработан Игорем Сысоевым и распространяется под лицензией BSD из 2 пунктов. nginx известен своей исключительной гибкостью, высокой производительностью и минимальным потреблением ресурсов. Он также: самый популярный веб-сервер в мире [Netcraft]; один из самых востребованных Docker-образов [DataDog]; активно используется в Ingress-контроллерах для Kubernetes, включая наш собственный. Корпоративное распространение, коммерческая поддержка и тренинги осуществляются компанией F5, Inc. Основная функциональность HTTP-сервера Обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов; Акселерированное обратное проксирование с кэшированием, распределение нагрузки и отказоустойчивость; Акселерированная поддержка FastCGI, uwsgi, SCGI и memcached серверов с кэшированием, распределение нагрузки и отказоустойчивость; Модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, XSLT-фильтр, SSI-фильтр, преобразование изображений; несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI/uwsgi/SCGI, выполняются параллельно; Поддержка SSL и расширения TLS SNI; Поддержка HTTP/2 с приоритизацией на основе весов и зависимостей; Поддержка HTTP/3. Другие возможности HTTP-сервера Виртуальные серверы, определяемые по IP-адресу и имени; Поддержка keep-alive и pipelined соединений; Настройка форматов логов, буферизованная запись в лог, быстрая ротация логов, запись в syslog; Специальные страницы для ошибок 3xx-5xx; rewrite-модуль: изменение URI с помощью регулярных выражений; Выполнение разных функций в зависимости от адреса клиента; Ограничение доступа в зависимости от адреса клиента, по паролю (HTTP Basic аутентификация) и по результату подзапроса; Проверка HTTP referer; Методы PUT, DELETE, MKCOL, COPY и MOVE; FLV и MP4 стриминг; Ограничение скорости отдачи ответов; Ограничение числа одновременных соединений и запросов с одного адреса; Геолокация по IP-адресу; A/B-тестирование; Зеркалирование запросов; Встроенный Perl; сценарный язык njs. Функциональность почтового прокси-сервера Перенаправление пользователя на 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. Функциональность TCP/UDP прокси-сервера Проксирование TCP и UDP; Поддержка SSL и расширения TLS SNI для TCP; Распределение нагрузки и отказоустойчивость; Ограничение доступа в зависимости от адреса клиента; Выполнение разных функций в зависимости от адреса клиента; Ограничение числа одновременных соединений с одного адреса; Настройка форматов логов, буферизованная запись в лог, быстрая ротация логов, запись в syslog; Геолокация по IP-адресу; A/B-тестирование; сценарный язык njs. Архитектура и масштабируемость Один главный и несколько рабочих процессов, рабочие процессы работают под непривилегированным пользователем; Гибкость конфигурации; Изменение настроек и обновление исполняемого файла без перерыва в обслуживании клиентов; Поддержка 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+); Поддержка файлового AIO (FreeBSD 4.3+, Linux 2.6.22+); Поддержка DIRECTIO (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.