Ошибка 408 Request Timeout: что значит и как исправить
408 Request Timeout — сервер не получил запрос целиком за отведённое время и перестал ждать. Обычно виноваты медленное или оборванное соединение у посетителя либо отправка большого файла по слабому каналу. В nginx у кода 408 есть особенность: посетителю он ничего не отправляет — код виден только в журнале доступа.
Содержание 10
Что означает код 408
По стандарту HTTP код 408 значит: сервер не получил полный запрос за то время, которое был готов ждать. Клиент может повторить запрос, а если прежнее соединение уже не годится — через новое.
Не путайте 408 с 504. При 408 сервер не дождался запроса от клиента — браузера или программы. При 504 посредник, обычно nginx, не дождался ответа от следующего сервера: PHP или приложения.
Если вы посетитель
- Обновите страницу: если связь на секунду пропала, повторный запрос обычно проходит.
- Если ошибка появляется при отправке формы или загрузке файла, проверьте интернет: на слабой связи передача может надолго замирать.
- Попробуйте другую сеть — например, мобильный интернет вместо Wi-Fi.
- Если ошибка повторяется и на хорошей связи, напишите владельцу сайта, что и когда вы отправляли.
Какие таймауты 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 | Посредник не дождался ответа от следующего сервера |
Источники
- RFC 9110, раздел 15.5.9 — определение кода 408.
- Документация nginx: client_header_timeout и client_body_timeout.
- Документация nginx: error_log — уровни журнала.
- Исходный код nginx — как nginx завершает запрос с кодом 408.
- Яндекс Вебмастер: коды ответа HTTP.
Сверено 6 октября 2026 года.
Что почитать дальше
- Код 499 в nginx — когда соединение закрыл клиент.
- Ошибка 504 Gateway Timeout — когда nginx не дождался ответа от сайта.
- Ошибка 413 Request Entity Too Large — когда файл больше лимита сервера.
- Как разместить сайт на VPS — настройка nginx с нуля.
Проверено и обновлено: 07.10.2026