URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 106655
[ Назад ]

Исходное сообщение
"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."

Отправлено opennews , 09-Фев-16 19:46 
Доступен (http://mailman.nginx.org/pipermail/nginx-announce/2016/00017...) выпуск основной ветки высокопроизводительного HTTP-сервера nginx 1.9.11, в котором реализованы следующие изменения:


-  Добавлена поддержка динамически загружаемых модулей (http://nginx.org/en/docs/ngx_core_module.html#load_module). Модуль оформляется в виде разделяемой библиотеки и загружается при помощи директивы load_module (например, "load_modulemodules/ngx_mail_module.so");
-  В resolver (http://nginx.org/en/docs/http/ngx_http_core_module.html#reso...) добавлена поддержка отправки DNS-запросов с использованием протокола TCP;

-  Исправлена ошибка, из-за которой переменная $request_length не учитывала размер заголовков запроса при использовании HTTP/2;
-  Исправлена ошибка в модуле ngx_http_v2_module.

URL: http://mailman.nginx.org/pipermail/nginx-announce/2016/00017...
Новость: http://www.opennet.me/opennews/art.shtml?num=43839


Содержание

Сообщения в этом обсуждении
"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено xl32 , 09-Фев-16 19:46 
Ух, заживём! Сразу пробовать на ngx_brotli.

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено xl32 , 10-Фев-16 13:20 
Да, динамический brotli прекрасно работает. Протестировано на https://zavedu.org/

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 09-Фев-16 23:22 
Еще немного и хтаксес запилят

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Michael Shigorin , 10-Фев-16 00:59 
Ну да, про a patchy server все хором подумали при LoadModule...

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено myhand , 11-Фев-16 13:57 
Зато сколько было кривляний перед тем как запилить...

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 10-Фев-16 06:29 
Скоро будет жирнее индейца ))

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 10-Фев-16 06:41 
> Скоро будет жирнее индейца ))

cherokee или apache?


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено eRIC , 10-Фев-16 15:04 
> cherokee или apache?

apache2



"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Sw00p aka Jerom , 10-Фев-16 02:29 
ещёбы создали бы репозиторий сторонних модулей с проверкой качества было бы хорошо, а то блин модсек текёт как лань

"!!!"
Отправлено GrammarNarziss , 11-Фев-16 11:10 
"течёт", позорище

"!!!"
Отправлено Sw00p aka Jerom , 11-Фев-16 15:50 
граммарнаци?

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 10-Фев-16 05:21 
> Добавлена поддержка динамически загружаемых модулей. Модуль оформляется
> в виде разделяемой библиотеки и загружается при помощи директивы
> load_module (например, "load_module modules/ngx_mail_module.so");

И в каком месте он динамический, если его надо прописывать в конфиге и если он загружается в момент запуска? Или можно сделать что-нибудь типа "nginx -s load_module modules/foo.so"?


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 10-Фев-16 06:22 
/etc/init.d/nginx upgrade

ну да


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 10-Фев-16 10:01 
> /etc/init.d/nginx upgrade

Спасибо тебе, мой анонимный друг.

Не совсем понятно, что именно происходит внутри инит-скрипта. Пришлось гуглить. Нашёл вот такое: http://nginx.org/en/docs/control.html#upgrade Там написано, что бинарник nginx аккуратно перегружается и заново читает конфиг.

Но вопрос остаётся: возможно ли подгрузить/выгрузить модуль без правки конфигов и перезапуска серванта.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 10-Фев-16 12:29 
Нет. У nginx'а динамически загружаемые в значении Dynamic linked, а не "подгружаемые в любой момент времени" - видимо издержки перевода.

Но ты всегда можешь написать патч и отправить им, заодно обосновав нафига этот функционал нужен в веб-сервере, который можно если что и перезапустить.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 10-Фев-16 13:14 
> Но ты всегда можешь написать патч и отправить им

Могу... Не не могу.

> нафига этот функционал нужен в веб-сервере, который можно если что и перезапустить.

А нафига модули нужны в ядре ОС, которое можно если что и перезапустить?


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 10-Фев-16 13:54 
>> Но ты всегда можешь написать патч и отправить им
> Могу... Не не могу.

Можешь купить nginx plus и заплатить за добавление такого функционала.

>> нафига этот функционал нужен в веб-сервере, который можно если что и перезапустить.
> А нафига модули нужны в ядре ОС, которое можно если что и
> перезапустить?

Затем что веб-сервер перезапускается незаметно для пользователей за время меньше секунды, без разрыва соединений. Вот когда ОС можно будет перезагрузить за время меньше секунды без остановки пользовательского ПО и разрыва соединений - тогда и там можно будет поднять вопрос целесообразности загрузки модулей на лету.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Hile , 10-Фев-16 23:45 
Эта откуда такая инфа ? Без разрыва соединений....

Чет графики коннектов говорят об обратном :)


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 11-Фев-16 05:35 
Аноним правильно говорит. При upgrade запущенный инстанс сервера запускает ещё одну копию, но уже с новым конфигом, сам перестаёт принимать новые соединения, ждёт завершения всех установленных соединений и умирает. А новый инстанс с момента запуска начинает принимать и обрабатывать все новые соединения и не обращает никакого внимания на старый инстанс.

Ни единого разрыва ©


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено XoRe , 13-Фев-16 15:29 
> Эта откуда такая инфа ? Без разрыва соединений....
> Чет графики коннектов говорят об обратном :)

Без разрыва уже установленных TCP соединений - не совсем верно, конечно.
Точнее будет сказать - аккуратно передав все LISTEN сокеты новому процессу.
То есть без ситуаций, когда 80 порт никто не слушает.
Магии никакой нет, просто аккуратное обращение с сокетами.
Инфа отсюда: http://nginx.org/ru/docs/control.html


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 10-Фев-16 13:14 
> nginx аккуратно перегружается и заново читает конфиг

Мастер-процесс nginx переносит новые входящие соединения на новый запущенный бинарь воркера, ожидает завершения соединений на старом воркере и его гробит.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 10-Фев-16 13:17 
>> nginx аккуратно перегружается и заново читает конфиг
> Мастер-процесс nginx переносит новые входящие соединения на новый запущенный бинарь воркера,
> ожидает завершения соединений на старом воркере и его гробит.

Да. Поэтому я использовал слово "аккуратно".


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Wladmis , 10-Фев-16 21:38 
> Не совсем понятно, что именно происходит внутри инит-скрипта. Пришлось гуглить.

А почитать init-скрипт?


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 11-Фев-16 05:43 
>> Не совсем понятно, что именно происходит внутри инит-скрипта. Пришлось гуглить.
> А почитать init-скрипт?

Я сказал "не совсем понятно" исключительно из вежливости. У меня нет доступа к init-скриптам Анонима и мне, собственно, глубоко пофигу, что у него там написано. В убунтoвском инит-скрипте nginx-a я уже как-то натыкался на баг и с тех пор перегружаю вебсервер без него. Поэтому я хочел узнать, какой командой можно загружать/выгружать модули.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено RaSla , 10-Фев-16 07:59 
В том месте, что теперь вместо разных пакетов(скомпилированных с разным составом модулей):
nginx
nginx-full
nginx-extras
nginx-light
и т.д.

можно будет сделать 1 единственный пакет, который заменяет их все:
nginx
А ненужные модули просто НЕ ПОДКЛЮЧАЮТСЯ при (ре)старте сервера


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Andrey Mitrofanov , 10-Фев-16 09:44 
> В том месте, что теперь вместо разных пакетов(скомпилированных с разным составом модулей):
> можно будет сделать 1 единственный пакет, который заменяет их все:
> nginx
> А ненужные модули просто НЕ ПОДКЛЮЧАЮТСЯ при (ре)старте сервера

Ждём n2ebable? Скорее бы.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено myhand , 11-Фев-16 13:55 
Тебе смишно, а мейнтейнерам пакета с такой расширяемостью как у
nginx - слезы.  Индеец в этом отношении действительно удобнее, сложно спорить.

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 10-Фев-16 10:03 
Не это делает их динамическими.

Я не хочу при старте/рестарте сервера. Я хочу динамически. Как из командной строки или из другой программы в произвольный момент времени загрузить/выгрузить произвольный модуль?


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 10-Фев-16 12:30 
> Не это делает их динамическими.
> Я не хочу при старте/рестарте сервера. Я хочу динамически. Как из командной
> строки или из другой программы в произвольный момент времени загрузить/выгрузить произвольный
> модуль?

Динамические в значении dynamic library, а не в значении "загружаю в произвольный момент".

Если хочется динамически в смысле без рестарта - патчи welcome или fork делай и пили там.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено angra , 10-Фев-16 15:04 
А что это тебе даст? Ну загрузил ты модуль, болтается он в памяти, дальше что? Неужели непонятно, что пользы от этого без правки конфига практически никакой нет. А если конфиг правишь, то тебе все равно придется сделать reload.

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 11-Фев-16 05:56 
> А что это тебе даст? Ну загрузил ты модуль, болтается он в
> памяти, дальше что? Неужели непонятно, что пользы от этого без правки
> конфига практически никакой нет. А если конфиг правишь, то тебе все
> равно придется сделать reload.

Именно потому, что нельзя изменить параметры работы веб-сервера без перегрузки (а reload это "аккуратная" перезагрузка без даунтайма), я и говорю, что модули не являются динамическими. Если бы можно было попросить веб-сервер заново прочитать конфиг (т.е. изменить параметры своей работы) на лету, совсем без перегрузки, то можно было бы ставить вопрос: "А можно изменить параметры работы веб-сервера без повторного прочтения конфигов?".

А так, да, в нынешней ситуации мой вопрос не имеет смысла.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Sw00p aka Jerom , 10-Фев-16 15:29 
не путайте понятие консоли управления и конфиг файл, это вам не циска

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено XoRe , 13-Фев-16 15:39 
> И в каком месте он динамический, если его надо прописывать в конфиге
> и если он загружается в момент запуска? Или можно сделать что-нибудь
> типа "nginx -s load_module modules/foo.so"?

Динамический он в том смысле, что слинкован динамически в виде отдельного .so файла, а не статически (внутри главного бинарника).
В тексте новости так и написано:
> Модуль оформляется в виде разделяемой библиотеки

Если что, вот хорошее объяснение:
О разнице между динамическими и статическими библиотекам
http://www.amse.ru/courses/cpp2/2010_11_01_lib.html

Не каждый сервис может подгружать so файлы "на лету".
Куда проще рестартануть сервис с новым списком библиотек.
В nginx и так все сделано для очень мягкого и незаметного рестарта.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 10-Фев-16 07:43 
Вторая хорошая новость за неделю. Что-то очень плохое теперь должно случиться

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено eRIC , 10-Фев-16 08:32 
> Вторая хорошая новость за неделю. Что-то очень плохое теперь должно случиться

уже случилось, обновление Java 8u74 :)


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 10-Фев-16 08:38 
разве она не у вантузятников?

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Аноним , 10-Фев-16 09:41 
ElasticSearch, Cassandra, PrestoDB и остальная big-data лабудень…

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 10-Фев-16 10:11 
> Вторая хорошая новость за неделю. Что-то очень плохое теперь должно случиться

Чтобы не случилось ничего плохого, после хорошей новости следует совершить жертвоприношение айти-богам.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Andrey Mitrofanov , 10-Фев-16 11:59 
> Чтобы не случилось ничего плохого, после хорошей новости следует совершить жертвоприношение айти-богам.

Ритуальный фулл-бэкап, шифрованный 8ью раундами 8Кбитным ключом, в полночь в полнолуние вокруг костра в /dev/null ! Через левое плечо со свитком GPLv3 в правой руке.  //Да, спасибо, регулярно.


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено CHERTS , 10-Фев-16 14:17 
Модуль https://github.com/kvspb/nginx-auth-ldap тоже собирается для динамической загрузки, но только после правки config к виду http://pastebin.com/6deuf84h

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено cadmi , 10-Фев-16 16:30 
> Модуль https://github.com/kvspb/nginx-auth-ldap тоже собирается для динамической загрузки,
> но только после правки config к виду http://pastebin.com/6deuf84h

Нормальные люди diff кладут, а не "к виду"


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено CHERTS , 10-Фев-16 16:46 
Нормальные люди говорят спасибо, а не нудят.

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 11-Фев-16 05:57 
> Нормальные люди говорят спасибо, а не нудят.

Спасибо. А можно diff получить? Ещё раз спасибо.

:-)


"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено CHERTS , 11-Фев-16 07:51 
Пожалуйста: https://goo.gl/ZIfZB8
Или так:
--- config.orig    2016-02-11 09:36:55.932906200 +0500
+++ config    2016-02-11 09:41:05.000000000 +0500
@@ -1,14 +1,16 @@
ngx_addon_name=ngx_http_auth_ldap_module
-HTTP_MODULES="$HTTP_MODULES ngx_http_auth_ldap_module"
-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_auth_ldap_module.c"

-CORE_LIBS="$CORE_LIBS -lldap"
+ngx_module_libs=-lldap

-case "$NGX_PLATFORM" in
-    Darwin:*|FreeBSD:*|Linux:*|SunOS:*)
-        CORE_LIBS="$CORE_LIBS -llber"
-    ;;
-esac
-
-CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS"
+if [ $ngx_module_link = DYNAMIC ] ; then
+    ngx_module_name="ngx_http_auth_ldap_module"
+    ngx_module_srcs="$ngx_addon_dir/ngx_http_auth_ldap_module.c"
+    . auto/module
+elif [ $ngx_module_link = YES ] ; then
+    ngx_module_type=HTTP
+    ngx_module_name=ngx_http_auth_ldap_module
+    ngx_module_incs=
+    ngx_module_deps=
+    ngx_module_srcs="$ngx_addon_dir/ngx_http_auth_ldap_module.c"
+    . auto/module
+fi

"Выпуск nginx 1.9.11 с поддержкой динамически загружаемых мод..."
Отправлено Какаянахренразница , 11-Фев-16 10:47 
Спасибо.

Эй, юзер cadmi, барин жалует тебе ейный diff. Прямо с барского плеча. Кланяйся барину. Ну, или хотя бы скажи "спасибо". Как видишь, помогает.