Делаем Двигаем
Делаем Двигаем · статьи

Ошибки 502 и 504 на сайте: что это и как исправить

03 сентября 2026 · 4 мин чтения · Рустам Аннагелдиев, разработчик

Ошибки 502 и 504 означают, что «входная дверь» сайта работает, а тот, кто должен готовить страницы, не отвечает. Разбираемся, кто не отвечает и почему.

Как устроен типичный сайт

Перед сайтом почти всегда стоит nginx (или Cloudflare, или балансировщик хостинга). Он принимает запрос и передаёт его дальше: на PHP-FPM, Apache, приложение на Node или Python. Если «дальше» никто не ответил, nginx честно сообщает об этом посетителю кодом 502 или 504.

Частые причины 502

  1. Упал PHP-FPM или приложение. Закончилась память на сервере, OOM-killer убил процесс. На VPS чинится перезапуском (systemctl restart php8.2-fpm), а потом поиском того, кто съел память.
  2. Приложение не поднялось после деплоя или перезагрузки. Ошибка в коде, не установилась зависимость, не тот порт. Смотрите лог приложения, а не nginx.
  3. Слишком много запросов. Все воркеры PHP заняты, новые запросы некуда принять. Часто это боты или атака, иногда просто рекламная кампания, которая привела больше людей, чем сервер тянет.
  4. Проблема у хостинга. На shared-хостинге 502 часто означает работы или перегрузку сервера. Проверьте статусную страницу хостинга и напишите в поддержку.

Частые причины 504

  1. Медленный запрос к базе. Страница каталога с 50 000 товаров без индексов в MySQL считается минуту. Помогает индекс, кеш или переписанный запрос.
  2. Внешний сервис не отвечает. Сайт ждёт ответа от 1С, CRM, платёжки, курса валют, и ждёт дольше таймаута. Правильно ставить таймаут на запрос и не блокировать страницу.
  3. Тяжёлые операции в момент запроса. Импорт, генерация отчёта, отправка рассылки прямо при открытии страницы вместо фоновой задачи.

Что сделать самому за пять минут

# Ошибки nginx: кто именно не ответил
tail -n 50 /var/log/nginx/error.log

# Живы ли процессы и сколько памяти свободно
systemctl status php8.2-fpm nginx
free -m
df -h

Если в error.log написано connect() failed (111: Connection refused), приложение не запущено. Если upstream timed out, это 504, и искать надо медленный запрос. Если No space left on device, диск заполнен.

Поднять таймаут в nginx (proxy_read_timeout, fastcgi_read_timeout) иногда советуют как лекарство от 504. Это не лечение, а обезболивающее: посетитель будет ждать не 60, а 180 секунд и всё равно уйдёт. Причину медленного ответа нужно убирать.

Починим сегодня, от 2 900 ₽

Опишите проблему, ИИ назовёт цену за минуту. Оплата после оценки, работа в тот же день, 14 дней гарантии.

Разработчик с 10-летним опытом, ИП, по оферте и с закрывающими документами.

Бесплатный мониторинг сайта. Проверяем каждые 5 минут. Упал: пишем в Telegram или MAX в течение 10 минут. Без регистрации и рассылок. Подключить бесплатно