Почему reload нужно делать через nginx -t

28 августа 2026

Ошибка, которая долго не проявляется, — худший вид ошибки. С nginx она выглядит так: правишь конфиг, делаешь nginx -s reload, всё продолжает работать. Кажется, что применилось. На самом деле конфиг битый, мастер-процесс это увидел, отказался перечитывать и остался на старом.

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

Лечится одной привычкой:

nginx -t && nginx -s reload

В докере — так:

docker compose exec nginx nginx -t && \
docker compose exec nginx nginx -s reload

&& здесь принципиально: без него вторая команда выполнится даже при провале первой, и вы вернётесь ровно туда, откуда начали.