Проблемы с деплоем из-за заголовка Host в проверках готовности Nginx
Разработчики столкнулись с неожиданной проблемой при blue-green деплое: несмотря на статус healthy, новые контейнеры не получали трафик из-за усиления безопасности Nginx, которое привело к некорректной обработке заголовков Host в readiness-проверках.
При внедрении новой версии приложения с использованием стратегии blue-green деплоя, разработчики столкнулись с непереключением трафика на новую, казалось бы, рабочую версию. Система мониторинга показывала, что контейнер находится в статусе «healthy» (работоспособный), однако трафик к нему не поступал.
Причина оказалась в обновлённых настройках безопасности веб-сервера Nginx, который стал строже проверять заголовок Host в readiness-запросах. Это привело к тому, что проверки готовности (readiness probes) для новых контейнеров начали завершаться с ошибкой, препятствуя переключению трафика, хотя само приложение внутри контейнера работало корректно.
Для решения проблемы потребовалась детальная отладка, включающая проверку конкретного слота деплоя и учёт Server Name Indication (SNI) при работе с HTTPS. Это позволило понять, как Nginx обрабатывает запросы и почему ранее работавшая конфигурация перестала быть эффективной после обновления.
Инцидент подчеркивает важность тщательного тестирования и учета изменений в инфраструктурных компонентах, таких как веб-серверы, при внедрении новых релизов. Неочевидные на первый взгляд изменения в настройках безопасности могут влиять на процесс деплоя и доступность сервисов.
Часто задаваемые вопросы
В чём заключалась проблема при blue-green деплое?
Проблема заключалась в том, что новые контейнеры, хотя и были здоровы, не получали пользовательский трафик, так как readiness-проверки завершались с ошибкой из-за некорректной обработки заголовков Host веб-сервером Nginx.
Что вызвало сбой readiness-проверок?
Сбой readiness-проверок был вызван усилением безопасности Nginx, которое изменило способ обработки заголовков Host в запросах, отправляемых для проверки готовности контейнера.
Как удалось решить проблему?
Проблема была решена путём детальной отладки, которая включала проверку конкретного слота деплоя и учет Server Name Indication (SNI) для корректной работы с HTTPS.
Почему этот инцидент важен для разработчиков?
Инцидент подчеркивает необходимость внимательного тестирования всех инфраструктурных изменений и их влияния на процессы деплоя, даже если эти изменения кажутся незначительными или направлены на повышение безопасности.
Источник: Habr · Rusability ИИ


Комментарии (0)
Без регистрации. Комментарии проверяются автоматически перед публикацией.
Пока нет комментариев. Будьте первым!