Nginx Linux (Nginx) 502

Nginx — после обновления модуля возникает ошибка 502 только на части запросов

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

После обновления Nginx или динамического модуля лишь некоторые URL дают 502, тогда как главная страница продолжает открываться. Код 502 означает проблему обмена с вышестоящим сервером; сам модуль может быть лишь косвенной причиной.

В этой статье
  1. Симптом и границы применимости
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Как проверить результат
  5. Если проблема не устранена

#Симптом и границы применимости

После обновления Nginx или динамического модуля лишь некоторые URL дают 502, тогда как главная страница продолжает открываться. Код 502 означает проблему обмена с вышестоящим сервером; сам модуль может быть лишь косвенной причиной.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
Отличается маршрут locationДля отдельных путей может использоваться другой upstream.502 появляется только у /api/ или /admin/Сопоставить location и proxy_pass/fastcgi_pass
Несовместимость модуля или фильтраДинамические модули требуют совместимости с установленным Nginx.Сбой начинается после обновления на определённых ответахСравнить журналы и версию сборки
Падают отдельные процессы приложенияОтвет 502 может появляться только при выполнении тяжёлых обработчиков.В журнале connection refused / upstream prematurely closedПроверить журналы конкретного backend

#Пошаговая диагностика и исправление

  1. Зафиксируйте воспроизводимые путиВ браузере соберите два адреса на одном домене: исправный и дающий 502. Запишите время, URL без секретных параметров и разницу GET/POST. Не передавайте cookies или токены. Проверьте каждый URL без повторной отправки опасных POST-запросов.
  1. Сравните ответы с сервераНа своём компьютере выполните curl -I для обеих публичных страниц; если API требует GET или HEAD не поддерживает, используйте безопасный GET на тестовом маршруте. Если ошибка только на динамических запросах, переходите к upstream, а не к TLS.
    Linux · Терминал (Bash)Команда
    Замените /api/health на существующий безопасный адрес; 405 на HEAD не означает сбоя.
    curl -I https://example.com/
    curl -I https://example.com/api/health
  1. Найдите соответствующую ошибку в журналеВ SSH найдите путь error_log и откройте последние записи в момент проблемы. Строки connect() failed, upstream sent invalid header, upstream prematurely closed connection имеют разные причины. Не повышайте уровень логирования на весь сайт без оценки объёма и персональных данных.
  2. Логи могут содержать URL и личные данные; обезличьте их
    Linux · Терминал (Bash)КомандаНужен sudo
    Логи могут содержать URL и личные данные; обезличьте их.
    sudo nginx -T 2>&1 | grep -nE "error_log|proxy_pass|fastcgi_pass|load_module"
    sudo journalctl -u nginx -n 80 --no-pager
  1. Проверьте состояние вышестоящего приложенияПо строке upstream в журнале определите адрес или Unix-сокет. Для TCP-порта посмотрите ss; для PHP-FPM — состояние службы и соответствующий пул; для другого приложения — его отдельный журнал. Если ошибка только в одном обработчике, проверьте его зависимости и время выполнения, не меняя общие тайм-ауты.
  2. Не изменяет систему; для Unix-сокетов дополнительно используйте ss -lxnp
    Linux · Терминал (Bash)КомандаНужен sudo
    Не изменяет систему; для Unix-сокетов дополнительно используйте ss -lxnp.
    sudo ss -lntp
  1. Проверьте версию и модуль после обновленияСравните вывод nginx -V и пакетный журнал обновления. В конфигурации найдите load_module; проверьте, что Nginx действительно стартовал без ошибок загрузки. Не копируйте бинарный модуль из другой версии и не отключайте проверку подписи или защиту ради теста.
    Linux · Терминал (Bash)Команда
    Выводит опции сборки и расположения настроек.
    nginx -V 2>&1
  1. Откатите только подтверждённую несовместимостьЕсли по журналу доказан сбой нового модуля, согласуйте окно обслуживания. Сохраните текущие конфиги и список пакетов; отключите необязательный модуль в тестовом окружении или вернитесь к совместимой версии из надёжного репозитория. После nginx -t выполните контролируемое перечитывание и проверьте проблемные пути.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Перед изменениями требуется резервная копия; обновление модулей может потребовать перезапуска.
    sudo nginx -t

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Как проверить результат

Два исходных адреса должны стабильно возвращать ожидаемые ответы. В error_log перестали появляться ошибки upstream в том же сценарии; сравните сообщения при повторном безопасном запросе.

#Если проблема не устранена

Если 502 сохраняется только при определённом POST/нагрузке, исследуйте запрос и журнал приложения вместе с upstream_addr и upstream_status; не маскируйте падение увеличением proxy_read_timeout без понимания причины.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.