HTTP-ошибки 400, 404, 500, 502, 503, 504: что означают и как устранять
Вместо страницы посетитель видит серый экран с числом. Коды похожи, но причины у них разные, и подход к устранению тоже. Разберём каждый и укажем, куда смотреть в первую очередь.

HTTP-ошибки 400, 404, 500, 502, 503, 504: что означают и как устранять
Вместо страницы посетитель видит серый экран с числом. Коды похожи, но причины у них разные, и подход к устранению тоже. Разберём каждый и укажем, куда смотреть в первую очередь.
Разница между 4xx и 5xx
Коды 4xx — проблема в запросе. Сервер работает, но не может выполнить то, что вы просите. Исправлять нужно данные или права доступа.
Коды 5xx — сбой на сервере. Запрос корректен, но обработать его не удалось из-за ошибки в коде, падения базы или перегрузки.
400: Bad Request
Сервер не может разобрать запрос. В теле пришёл невалидный JSON, отсутствует обязательный параметр, данные не соответствуют ожидаемому формату. Браузер отправил что-то некорректное.
Что делать: смотреть, какие данные уходят на сервер. В API обычно в ответе указано, какое поле вызвало ошибку.
401: Unauthorized
Доступ запрещён из-за отсутствия или невалидности аутентификационных данных. Токен устарел, пароль неверен, сессия завершилась.
Что делать: обновить токен, повторно войти в систему, проверить заголовки Authorization.
403: Forbidden
Сервер понял, кто вы, но доступ к ресурсу закрыт. У пользователя нет прав, адрес IP в чёрном списке, действие запрещено ролью.
Что делать: проверить права доступа, убедиться, что пользователь имеет нужную роль.
404: Not Found
Запрошенный ресурс не существует. Страница удалена, URL набран с ошибкой, файл не найден.
Что делать: проверить ссылку, убедиться, что маршрут зарегистрирован, посмотреть, не был ли ресурс перемещён.
422: Unprocessable Entity
Запрос синтаксически корректен, но данные не прошли валидацию на уровне бизнес-логики. Email уже занят, пароль слишком короткий, дата указана в прошлом.
Что делать: читать тело ответа — там перечислены конкретные поля и причины отклонения.
Общее правило: любой код на пятёрку указывает на проблему на стороне сервера, а не в браузере посетителя. Перезагрузка страницы здесь не поможет, устранять сбой нужно на бэкенде.
500: Internal Server Error
Сервер принял запрос и не смог его обработать. В большинстве случаев причина в коде: необработанное исключение, обращение к несуществующей переменной, обрыв соединения с базой. Код сообщает лишь о факте сбоя, но не о его источнике.
Куда смотреть: в логи приложения. В Laravel это storage/logs/laravel.log, у nginx отдельный error.log. Точная строка и стектрейс почти всегда находятся там.
502: Bad Gateway
Прокси-сервер обратился к приложению и не получил корректного ответа. PHP-FPM завершился с ошибкой, Node-процесс остановился, контейнер перезапускается и ещё не готов принимать запросы. Прокси на месте, отвечать некому.
Что делать: проверить, работает ли процесс приложения командами systemctl status php-fpm, pm2 list или docker ps. Если процесс остановлен, поднять его и установить причину падения, иначе ошибка повторится.
503: Service Unavailable
Сервер работает, но временно отказывается обслуживать запросы. Так происходит во время деплоя, при перегрузке или включённом режиме обслуживания. В Laravel команда php artisan down возвращает именно 503.
Что делать: если работы не плановые, значит, сервер не справляется с нагрузкой. Проверить загрузку CPU и памяти, убедиться, что пул воркеров не исчерпан.
504: Gateway Timeout
Прокси ожидал ответа от приложения дольше допустимого лимита и разорвал соединение. Причина в тяжёлом SQL-запросе, зависшем вызове внешнего API или бесконечном цикле. Бэкенд ещё обрабатывает запрос, но время ожидания у nginx уже вышло.
Что делать: найти узкое место. Медленные запросы к базе, обращения к сторонним сервисам без таймаута, тяжёлый отчёт, формирование которого занимает минуты.
Главная особенность ошибок 5xx
Владелец узнаёт о них последним. Посетитель получает 502 на странице оплаты, закрывает вкладку и уходит к конкуренту, а сбой обнаруживается лишь неделю спустя в отчёте по продажам.
Deploy.Rest проверяет сайт каждую минуту и фиксирует момент, когда он начинает отдавать 5xx вместо страниц. Уведомление приходит в Telegram сразу, а не когда клиенты устанут ждать. В результате вы открываете логи, пока о проблеме знаете только вы.