nginx reload & restart
Maxim Dounin
mdounin на mdounin.ru
Пн Апр 18 17:02:48 UTC 2016
Hello!
On Mon, Apr 18, 2016 at 06:50:27PM +0300, Анатолий Коростелев wrote:
> Здравствуйте!
>
> Подскажите, пожалуйста, есть ли список параметров в конфигурационном файле
> nginx, при изменении/добавлении/удаления которых достаточно и беспроблемно
> использовать nginx reload, а не nginx restart/upgrade? В моей конфигурации
> на множество серверов прилетают обновления конфигурационных файлов nginx и
> хотелось бы минимизировать использовать restart/upgrade.
Проблемы с reload'ом могут быть в случаях, когда затрагиваются
параметры, разделяемые между многими процессами. В частности:
- При изменениях зон разделяемой памяти - нельзя менять размеры
существующих зон и/или их использование (скажем, в limit_req
нельзя поменять одну переменную на другую). При этом можно
создать новую зону с произвольными параметрами - при этом в старых
рабочих процессах останется старая зона, а в новых - будет
использоваться уже новая.
- На Linux'е могут быть проблемы с изменением слушающих сокетов,
т.к. скажем слушать на *:80 и 127.0.0.1:80 одновременно Linux не
разрешает. Соответственно, при замене в конфигах одного на
другое reload будет невозможен, т.к. Linux не разрешит сделать
bind() для сокета из новой конфигурации
Если nginx не может сделать reload по каким либо причинам, в том
числе - по перечисленным выше, а равно из-за каких-либо ошибок, -
об этом будет написано в логе, а сам nginx останется работать с
прежней конфигурацией.
> В основном, мой вопрос касается в случае обновления файлов ssl-сертификата и
> ключа, достаточно будет в этом случае reload или будут подводные камни?
Каких-либо специфических проблем при обновлении сертификатов -
быть не должно. Однако в любом случае могут возникнуть
непредвиденные проблемы - e.g., может банально кончится память.
Т.е. в любом случае - стоит смотреть в логи. Использовать
restart/upgrade для обновления сертификатов - однозначно не надо.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru