Общая информация
NGINX (читается [engine x]) — это HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения, выполняющий следующие функции:
- Основная функциональность HTTP-сервера:
- Обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов;
- Акселерированное обратное проксирование с кэшированием, распределение нагрузки и отказоустойчивость;
- Акселерированная поддержка FastCGI, uwsgi, SCGI и memcached серверов с кэшированием, распределение нагрузки и отказоустойчивость;
- Модульность;
- Фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, XSLT-фильтр, SSI-фильтр, преобразование изображений; параллельная обработка подзапросов на одной странице в SSI-фильтре через прокси или FastCGI/uwsgi/SCGI;
- Поддержка SSL и расширения TLS SNI;
- Поддержка HTTP/2 с приоретизацией на основе весов и зависимостей;
- Расширенная функциональности 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 памяти;
- Минимум операций копирования данных.
Оригинальная документация NGINX
Оригинальная документация NGINX доступна по ссылке: https://nginx.org/ru/