Apache Linux (Apache HTTP Server 2.4)

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

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

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

Ошибка HTTP 502 у Apache обычно связана с его ролью обратного прокси: mod_proxy_http, mod_proxy_fcgi или балансировщиком. Обычная отдача статического файла Apache не должна создавать 502 из-за «обновления модуля». Если после обновления сбоит лишь часть URL, выясните, какой обработчик используется именно для них.

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

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

Ошибка HTTP 502 у Apache обычно связана с его ролью обратного прокси: mod_proxy_http, mod_proxy_fcgi или балансировщиком. Обычная отдача статического файла Apache не должна создавать 502 из-за «обновления модуля». Если после обновления сбоит лишь часть URL, выясните, какой обработчик используется именно для них.

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

Возможная причинаКак узнатьЧто делать
Сбой соединения с PHP-FPMmod_proxy_fcgi может не связаться с обработчиком.Только PHP URL дают 502, в error_log AH01079/AH01075Проверить сокет/порт и журнал PHP-FPM
Устаревшее или неверное правило ProxyPassЧасть запросов уходит в отдельный сервис.Сбой только /api/ или /backend/Проверить порядок правил и назначение upstream
Несовместимая конфигурация после обновленияПосле обновления могли измениться используемые модули и их конфигурация.Логи содержат ошибку конкретного обработчикаПроверить изменение настроек/модулей на стенде

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

  1. Ограничьте неисправность двумя URLС клиентского терминала проверьте один работающий файл CSS и один проблемный URL, по возможности без секретов/состояния. Зафиксируйте HTTP-код и время: если статика 200, а динамика 502, начните с цепочки Apache → приложение.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)Команда
    Подставьте безопасные существующие URL: -I отправляет HEAD, приложение может реагировать иначе, чем на GET.
    curl -I https://example.com/health; curl -I https://example.com/assets/site.css
  1. Проверьте журнал Apache по времениВ SSH откройте error_log виртуального хоста, из конфигурации найдите ErrorLog. У mod_proxy_fcgi бывают записи с идентификаторами AH010xx, у mod_proxy_http — другие сообщения подключения и тайм-аутов. Не диагностируйте только по HTTP-статусу.
  2. Debian пример; в RHEL может быть /var/log/httpd/error_log
    Linux · Терминал (Bash)КомандаНужен sudo
    Debian пример; в RHEL может быть /var/log/httpd/error_log. Не публикуйте личные данные.
    sudo tail -n 100 /var/log/apache2/error.log
  1. Проверьте, какие модули реально загруженыКоманда -M выводит модульный состав. Ищите proxy_module и нужный proxy_fcgi_module или proxy_http_module. Загрузка модуля не означает, что соответствующий backend здоров; отдельно проверьте сервис PHP-FPM или upstream.
  2. Debian/Ubuntu команда, RHEL обычно apachectl -M
    Linux · Терминал (Bash)КомандаНужен sudo
    Debian/Ubuntu команда, RHEL обычно apachectl -M.
    sudo apache2ctl -M | grep -E "proxy|http2|mpm"
  1. Найдите конкретное правило обработкиПроверьте ProxyPass, ProxyPassMatch, SetHandler и балансы для проблемного пути. В панели хостинга может быть отдельный файл конфигурации виртуального хоста. Не копируйте конфигурацию второго сайта: пути к сокетам и upstream могут отличаться.
  2. Только чтение; на других дистрибутивах путь меняется
    Linux · Терминал (Bash)КомандаНужен sudo
    Только чтение; на других дистрибутивах путь меняется.
    sudo grep -R -nE "ProxyPass|ProxyPassMatch|SetHandler|balancer://" /etc/apache2/sites-enabled/
  1. Сверьте доступность целевого сервисаДля TCP upstream проверьте локальный порт через ss и curl к специальному безопасному health URL; для Unix-сокета используйте ss -xlpn и namei -l. Если PHP-FPM отдаёт ошибку запуска, сначала исправьте PHP-FPM, а не перенастраивайте Apache.
  2. Обе команды показывают открытые сокеты, но не проверяют здоровье приложения
    Linux · Терминал (Bash)КомандаНужен sudo
    Обе команды показывают открытые сокеты, но не проверяют здоровье приложения.
    sudo ss -lntp; sudo ss -xlpn
  1. Измените только проверенную причинуПри расхождении пути к Unix-сокету исправьте его после копии VirtualHost и конфигурации пула; при остановленном сервисе восстановите сервис и выясните причину падения. Не отключайте модули Apache без проверки зависимых сайтов и не повышайте ProxyTimeout для скрытия аварий.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Debian systemd пример; изменение модулей иногда требует полного restart по штатной процедуре.
    sudo apache2ctl -t && sudo systemctl reload apache2

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

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

Повторите несколько GET к затронутым URL; код 502 исчез, ответы содержат правильное содержимое, а Apache error_log и журнал backend перестали фиксировать соединения с ошибками. Проверьте соседние URL и сайты.

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

Если 502 остаётся только под нагрузкой, исследуйте исчерпание процессов FPM, очереди backend и сбросы соединений. Если 502 возвращает внешний Nginx, ищите ошибку на соответствующей границе прокси.

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

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

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