За последний год в 1.7 было выпущено 12 версий, и все новые возможности, которые в них появились, теперь доступны в 1.8, включая:
- Проверку SSL сертификатов бэкендов — Призвана защитить соединения с upstream-серверами от MITM-атак;
- Логирование в syslog — Позволяет передавать логи по сети посредством UDP-сообщений;
- Пулы потоков для выполнения блокирующих операций ввода-вывода — Увеличивают производительность NGINX в ситуациях, когда блокировка на чтении с диска неизбежна;
- Новый метод балансировки нагрузки “hash” — Позволяет выбирать сервер из группы базируясь на хэше от произвольной переменной;
- Небуферизированный прием тела запроса — Позволяет передавать запрос на бэкенд сразу, не дожидаясь окончания приема тела запроса целиком.
Полный список нововведений за последний год можно посмотреть в логе изменений для 1.8.
Особенности нумерации
Перенумерация веток является ключевой точкой нашего ежегодного процесса, когда от основной ветки (разработка новой функциональности) ответвляется очередная стабильная (функциональность заморожена). Несколько недель назад произошло отделение 1.8 от основной в качестве новой стабильной, после чего основная 1.7 сменила версию на 1.9. Мы более не поддерживаем 1.6 (предыдущую стабильную ветку) и не разрабатываем ничего в 1.7.
В понимании NGINX, стабильная (1.8) означает что набор возможностей не изменяется и только исправления критических ошибок попадают в эту ветку. Стабильная не обязательно означает большую надежность и меньшее количество ошибок. На самом деле основная ветка (1.9) рассматривается как более надежная, поскольку в нее включается значительно большее количество исправлений, а не только критические, которые впоследствии перетекают также и в стабильную. С другой стороны, изменения в стабильной ветке скорее всего не затронут какие-либо сторонние модули, тогда как в основной такое может произойти при добавлении новой функциональности.
Для получения полной картины того, как мы нумеруем наши версии (с иллюстрациями) можно почитать прошлогоднюю статью на тему.
Что ожидать от 1.9?
Среди первых возможностей, которые были добавлены в 1.9, стали: TCP балансировка, позволяющая пользователям осуществлять балансировку нагрузки любых приложений, работающих поверх TCP, а также поддержка блоков upstream в разделяемой памяти, что улучшает консистентность балансировки и выявления проблем между несколькими рабочими процессами. Позже в этом году также запланирована поддержка протокола HTTP/2 и динамической загрузки модулей. Но это еще не все, ведется огромная работа и множество других замечательных возможностей стоит ожидать в рамках новой ветки.
А что с NGINX Plus?
NGINX Plus — это коммерческая версия NGINX с расширенной функциональностью. NGINX Plus базируется на основной ветке и обычно новые релизы выходят ежеквартально. Новые возможности из основной ветки перетекают в NGINX Plus и выпускаются после тщательного внутреннего тестирования, а также боевого крещения в рамках релизов основной ветки.
Комментарии (12)
istui
29.04.2015 10:31Где можно найти репозиторий 1.8/1.9 с GeoIP? Буду признателен за совет
nikitasius
29.04.2015 14:09+2А вы оригинальный собирали с
--with-http_geoip_module
?
http://nginx.org/ru/download.html, там
nginx-1.9.0.tar.gz\nginx-1.9.0\src\http\modules
и там
ngx_http_geoip_module.c
лежитistui
29.04.2015 18:46К сожалению, на серверах проектов собирать из исходников нет возможности. Поэтому — либо собственный билд-сервер+свой репозиторий, либо уже существующие решения. Будет полезной любая инфа :)
P.S. Уточнение — под CentOS 6/7.
Строго говоря, в инете можно найти репозитории с --with-http_geoip_module, но в них, как правило, представлены совсем уж древние версии…
Параллельно, вопрос к VBart как члену команды nginx: почему вы не включаете этот модуль в официальные пакеты? просто интересно, ведь, вроде бы, достаточно полезная вещь…VBart Автор
29.04.2015 21:55+1Потому, что он требует дополнительную зависимость, которая для многих будет лишней. К тому же, на некоторых системах соответствующей библиотеки и вовсе нет в официальных репозиториях.
script88
29.04.2015 10:37+2Интеграция с ldap планируется? ибо сторонний модуль кривовато работает с openldap
VBart Автор
29.04.2015 10:44+1Тема всплывала неоднократно и проблемы там в основном из-за отсутствия нормальной библиотеки с асинхронным интерфейсом. Основным и неплохо работающим решением на текущий момент является использование модуля auth_request вместе с каким-то внешним ldap-демоном, который уже не обязан быть асинхронным. В принципе такой демон пишется на python за пару дней.
Ввиду появления механизма пулов потоков, возможно, что мы вернемся к этой теме. Пока ничего определенного сообщить не могу.sebres
29.04.2015 19:13+3Кстати да, на auth_request вообще все довольно легко реализуется (хоть NTLM, хоть openldap).
nikitasius
29.04.2015 14:18Кстати, а кто-нибудь проверял как работает substitutions4nginx на 1.9.0?
sebres
29.04.2015 19:18У друга есть, скомпилированый с последним default из mercurial-repo (1.9.1). Насколько знаю полет нормальный.
Правда зная его, думаю, что оно (substitutions) чуть видоизмененное :)
Suvitruf
А кто-нибудь с этим балансировщиком работал после этих изменений? Мы как раз сейчас ищем балансировщик для игровых сервисов, посматриваем на него.
sebres
во первых я работал;
во вторых вы можете его собрать без stream-ов.