Как то давно в интернете читал про такой веб сервер как nginx, как выяснилось это очень легенький HTTP-сервер и почтовый прокси-сервер, разработанный замечательным человеком Игорем Сысоевым. В декабре 2009 года nginx использовался на 4% самых посещаемых сайтов в мире, оказывается на данный момент nginx работает на нескольких достаточно нагруженных сайтах под FreeBSD и Linux, в том числе на большинстве серверов Рамблера, что вселяет некоторый оптимизм.
На данный момент занимаюсь сборкой информации и более конкретным изучением всех достоинств этого чудо сервера и планирую перевести свои веб сервера на сие чудо.
Основная функциональность HTTP-сервера:
* обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов;
* акселерированное проксирование с кэшированием, простое распределение нагрузки и отказоустойчивость;
* акселерированная поддержка удалённых FastCGI серверов с кэшированием, простое распределение нагрузки и отказоустойчивость;
* модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, XSLT-фильтр, SSI-фильтр, преобразование изображений; несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно.
* поддержка SSL и расширения TLS SNI;
Функциональность почтового прокси-сервера:
* IMAP и POP3: перенаправление пользователя на IMAP или POP3-бэкенд с использованием внешнего HTTP-сервера аутентификации;
* SMTP: проверка пользователя с помощью внешнего HTTP-сервера аутентификации и перенаправление соединения на внутренний SMTP-сервер;
* методы аутентификации:
o POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
o IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
o SMTP: AUTH LOGI/ PLAIN/CRAM-MD5;
* поддержка SSL;
* поддержка STARTTLS и STLS;
Операционные системы и платформы:
* тестировалась сборка и работа на:
FreeBSD 3 — 7 платформа i386; FreeBSD 3 — 7 платформа amd64;
Linux 2.2 — 2.6 платформа i386; Linux 2.6 платформа amd64;
Solaris 9 платформы i386 и sun4u; Solaris 10 платформы i386, amd64 и sun4v;
MacOS X платформы ppc, i386;
Windows XP, Windows Server 2003.
Архитектура и масштабируемость:
* один главный процесс и несколько рабочих, рабочие процессы работают под непривилегированным пользователем;
* поддержка 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 памяти;
* минимум операций копирования данных;
Другие возможности HTTP-сервера:
* виртуальные сервера, определяемые по ip-адресу и имени;
* поддержка keep-alive и pipelined соединений;
* гибкость конфигурации на уровне Apache, настройка таймаутов и размеров буферов;
* изменение настроек и обновление исполняемого файла без перерыва в обслуживании клиентов;
* настройка форматов логов, быстрая ротация логов;
* специальные страницы для ошибок 4xx-5xx;
* изменение URI с помощью регулярных выражений;
* выполнение разных функций в зависимости от адреса клиента;
* ограничение доступа в зависимости от адреса клиента и по паролю (Basic аутентификация);
* методы PUT, DELETE, MKCOL, COPY и MOVE;
* FLV streaming;
* ограничение скорости отдачи ответов;
* ограничение числа одновременных соединений и запросов;
* встроенный perl;
Более подробно с этим проектом можно ознакомиться на сайте Игоря Сысоева — http://sysoev.ru/
FreeBSD и nginx.
Поделиться ссылкой на статью