Re: FR: дамп действующего конфига

Maxim Dounin mdounin на mdounin.ru
Пн Мар 22 14:28:01 UTC 2021


Hello!

On Sun, Mar 21, 2021 at 05:44:34PM -0400, edo1 wrote:

> несколько раз возникала потребность посмотреть конфиг, с которым работает
> nginx.
> 
> подобные запросы находил на SO, так что актуально не только для меня, в
> одном из вариантов ответа даже gdb приспособили:
> https://serverfault.com/questions/361421/dump-nginx-config-from-running-process
> 
> возможно ли сделать что-то вроде `nginx -T`, только выводящее конфиг с
> которым сейчас работает nginx? как вариант, при запуске записывать
> актуальный конфиг куда-нибудь в /run и обновлять после `nginx -s reload`

Сейчас конфиг в исходном виде сохраняется в памяти, если nginx 
собран с --with-debug.  Достать его при необходимости можно с 
помощью gdb и/или прямым поиском в памяти процесса.

В общем случае исходный конфиг не сохраняется, и посмотреть его, 
соответственно, никак нельзя.  В первую очередь потому, что конфиг 
может быть очень большим, особенно при использовании блоков map{} 
и geo{}, и хранение его "на всякий случай" - сомнительная трата 
ресурсов.

Какого-либо хорошего решения я тут не вижу.  Разве что хранить 
конфиг до какого-то разумного размера, а дальше переставать.

Что до решения "записывать актуальный конфиг куда-нибудь в /run", 
то это, скорее, внешняя по отношению к nginx'у задача, решаемая 
скриптами запуска.  Но закончится, думаю, как обычно: кто-то этот 
актуальный конфиг удалит или перепишет, и снова возникнет 
потребность посмотреть конфиг, с которым работает nginx.

Вообще, судя по вопросу на serverfault, основная решаемая задача - 
"конфиг случайно промотался".  Для её решения не нужен конфиг, с 
которым работает nginx, для её решения нужно не забывать 
бэкапиться.  В случае конфигов - хорошо помогает хранение их хотя 
бы в локальном репозитории и коммиты после любых значимых 
изменений.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru