nginx не перезагружает — он форкает. И это ломает сайты
Читал статью про nginx и reload — и понял, что даже «бесшовное» обновление может сломать работу. Не из-за бага, а из-за архитектуры. И это касается почти всех.
О чём речь и почему я считаю это важным
Речь о том, как nginx обновляет конфигурацию. Не просто «перезагружает», а форкает новых воркеров. Старые воркеры при этом закрывают idle-соединения — даже если клиент ещё не закончил. Это не ошибка, но может сломать неидемпотентный запрос.
Я считаю это важным, потому что такие сбои не видны в логах. Клиент получает 502, но сайт работает. Это не авария — это скрытая уязвимость, которую можно устранить заранее.
Как это устроено — что тут вообще происходит
nginx не перезагружает процессы. Он форкает новых поверх старых. Старые воркеры продолжают обслуживать активных клиентов — но закрывают только те, которые помечены как idle.
Ключевое — флаг idle. Он не означает «простаивает». Он означает «может быть закрыт». И если протокол не держит соединение открытым (например, WebSocket), то оно остаётся. А если HTTP/1.1 keep-alive — то закрывается. Даже если запрос ещё не завершён.
Как понять, что это касается вашего сайта
Проверяю это, если сайт использует nginx, прокси и keep-alive. Особенно если есть бэкенд, который долго отвечает или используется для загрузки файлов.
Если у вас есть формы, API, где запросы не идемпотентны — это риск. Или если клиенты жалуются на «случайные 502» после деплоя. Это не случайность — это поведение nginx.
Что с этим делать
Я не просто обновляю конфиг. Сначала смотрю, как настроены keep-alive, сколько времени живут соединения, как ведёт себя бэкенд.
Если возможно — перенесу деплой на пиковый час. Или добавлю задержку перед reload. Иногда — пересмотрю архитектуру: например, уменьшить keep-alive или использовать более стабильные бэкенды.
Что здесь даёт поддержка
На поддержке это не «починим после падения». Это «предотвращаем до падения». Проверяю конфиг, смотрю, как ведёт себя сайт при обновлении, и вношу изменения, чтобы устранить риски.
Главный итог не «мы починим», а «вы перестанете думать о сайте». Предсказуемость вместо авралов — это наша работа.
Работаем с 2002 года, более 100 клиентов по всему миру. Хотите проверить, как ваш сайт держится при обновлении? Сделайте бесплатный аудит сайта.