Ошибки

Ошибка 408 Request Timeout: что значит и как исправить

408 Request Timeout — сервер не получил запрос целиком за отведённое время и перестал ждать. Обычно виноваты медленное или оборванное соединение у посетителя либо отправка большого файла по слабому каналу. В nginx у кода 408 есть особенность: посетителю он ничего не отправляет — код виден только в журнале доступа.

Обновлено 07.10.2026≈ 4 мин чтения
Содержание 10

Что означает код 408

По стандарту HTTP код 408 значит: сервер не получил полный запрос за то время, которое был готов ждать. Клиент может повторить запрос, а если прежнее соединение уже не годится — через новое.

Не путайте 408 с 504. При 408 сервер не дождался запроса от клиента — браузера или программы. При 504 посредник, обычно nginx, не дождался ответа от следующего сервера: PHP или приложения.

Если вы посетитель

  1. Обновите страницу: если связь на секунду пропала, повторный запрос обычно проходит.
  2. Если ошибка появляется при отправке формы или загрузке файла, проверьте интернет: на слабой связи передача может надолго замирать.
  3. Попробуйте другую сеть — например, мобильный интернет вместо Wi-Fi.
  4. Если ошибка повторяется и на хорошей связи, напишите владельцу сайта, что и когда вы отправляли.

Какие таймауты nginx отвечают за 408

ДирективаЧто ограничиваетПо умолчанию
client_header_timeoutВремя на получение всего заголовка запроса60 секунд
client_body_timeoutПаузу между двумя чтениями тела запроса, а не всю передачу60 секунд

Второй таймаут часто понимают неверно. Он не ограничивает загрузку файла целиком: передача может длиться сколько угодно, пока данные идут без долгих пауз. 408 будет, только если передача замерла дольше чем на минуту.

У nginx есть особенность: завершая запрос с кодом 408, он ничего не отправляет клиенту, а просто закрывает соединение. Поэтому страницу с кодом 408 от nginx посетитель не увидит — код останется только в журнале доступа. А если клиент открыл соединение и не прислал вообще ничего, nginx закроет его, не оставив строки и в журнале доступа.

Как найти причину

Какие адреса получают 408 и с каких IP-адресов, покажет журнал доступа:

awk '$9 == 408 {print $1, $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Команда рассчитана на стандартный формат журнала nginx: первое поле — IP-адрес, седьмое — адрес страницы, девятое — код ответа. Если 408 собираются на адресе, куда загружают файлы, — посетители не успевают передать данные.

Если не пришёл целиком заголовок запроса, nginx пишет в журнал ошибок строку «client timed out» на уровне info, а этот уровень по умолчанию не записывается. Как включить уровень info в журнале, рассказано в разборе ошибки 400.

Как исправить

Загрузка больших файлов. Если посетители отправляют большие файлы по медленной связи, увеличьте client_body_timeout — лучше не для всего сайта, а только для адреса загрузки. Для приложения за nginx это выглядит так:

location /upload/ {
    client_body_timeout 120s;
    proxy_pass http://127.0.0.1:8000;
}

Строку proxy_pass замените той, что передаёт запросы вашему приложению: без неё nginx станет отдавать по этому адресу файлы с диска. Если файлы принимает PHP-скрипт, добавьте директиву в блок location, который передаёт запросы PHP.

Не поднимайте таймауты без нужды. Короткие таймауты не дают медленным клиентам подолгу занимать соединения. Таймаут заголовка обычно менять не нужно: заголовок запроса небольшой, и минуты на него хватает с запасом.

Сайт за CDN или балансировщиком. У посредника свои ограничения времени. Если в журнале вашего nginx 408 нет, а посетители жалуются, смотрите настройки посредника.

После любых правок: sudo nginx -t, затем sudo systemctl reload nginx.

На обычном хостинге

Таймауты там задаёт хостер. Большие файлы надёжнее загружать по SFTP или через файловый менеджер панели, а не через форму на сайте. Если 408 повторяется, напишите в поддержку адрес страницы и время.

408 и поиск Яндекса

По справке Яндекса, при ответе 408 полный запрос не был передан за установленное время и робот разорвал соединение. Яндекс советует оптимизировать время обработки запросов на сервере и настроить таймауты в его конфигурации.

Чем 408 отличается от соседних кодов

КодКогда возникает
400Запрос пришёл, но испорчен
408Сервер не дождался запроса от клиента
499Клиент не дождался ответа и закрыл соединение — код есть только в журнале nginx
504Посредник не дождался ответа от следующего сервера

Источники

Сверено 6 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 07.10.2026