ERR_INCOMPLETE_CHUNKED_ENCODING: что значит и как исправить
ERR_INCOMPLETE_CHUNKED_ENCODING — сервер отправлял страницу частями и закрыл соединение раньше, чем сообщил, что страница закончилась. Страница открывается не целиком или остаётся пустой, а код ошибки виден в консоли разработчика.
Содержание 10
Что сделать прямо сейчас
Если вы просто открываете сайт:
- Обновите страницу: F5, на Mac — Cmd+R. Если соединение оборвалось случайно, со второго раза страница может загрузиться полностью.
- Если страница опять обрывается, исправить это может только владелец сайта. Сообщите ему адрес страницы и код ошибки ERR_INCOMPLETE_CHUNKED_ENCODING.
Если сайт ваш, переходите к разделам «Как проверить» и «Как исправить» ниже: там все команды по шагам.
Что значит ошибка
Сервер не всегда знает длину страницы заранее: например, программа сайта ещё собирает страницу, а её начало уже можно отправлять. Тогда сервер передаёт страницу частями. Перед каждой частью он указывает её размер, а в конце присылает пустую часть — знак, что страница закончилась.
Если соединение закрылось раньше, чем пришёл этот знак, страница дошла не до конца. По правилам HTTP такой ответ считается неполным, и Chrome сообщает об ошибке ERR_INCOMPLETE_CHUNKED_ENCODING. В исходном коде Chrome это ошибка -355.
Передавать страницу частями умеет протокол HTTP/1.1, а в HTTP/2 этот способ не используется. Сервер nginx отправляет страницу частями по HTTP/1.1, например, в таких случаях:
- программа сайта не указала длину страницы в заголовке Content-Length;
- nginx сам сжимает страницу: после сжатия длина меняется, и nginx убирает этот заголовок.
Какой код покажет Chrome, когда страница оборвалась, зависит от того, как она шла: если длина была названа заранее — ERR_CONTENT_LENGTH_MISMATCH, если страница шла частями — эту ошибку.
Как выглядит в Chrome
В нашей проверке Chrome не показал никакого сообщения: на экране осталась та часть страницы, которую он успел получить. Если после заголовков не пришло ни одной части, страница была пустой.
Сам код ошибки виден в инструментах разработчика: нажмите F12 или Ctrl+Shift+I, на Mac — Cmd+Option+I, и откройте вкладку Console («Консоль»). В ней появится строка Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING. Такая же строка бывает и тогда, когда оборвалась не сама страница, а картинка, скрипт или стиль на ней.
Страницу ошибки Chrome для этого кода тоже может показать: заголовок «Страница недоступна», текст «Сайт example.com неожиданно разорвал соединение.», код ERR_INCOMPLETE_CHUNKED_ENCODING и кнопку «Перезагрузить».
Причины
Сама по себе передача частями — нормальный способ отправить страницу. Ошибка значит только, что передача оборвалась. Вот почему это бывает:
- Программа сайта не закончила ответ. Она начала отдавать страницу, но аварийно завершилась или закрыла соединение раньше времени.
- nginx перестал ждать программу. Если программа посреди ответа надолго замолкает, nginx закрывает соединение. По умолчанию он ждёт каждую следующую порцию данных 60 секунд.
- Диск сервера заполнен. Ответ программы, который не помещается в отведённую под него память, nginx частично записывает во временный файл на диске. Если места нет, записать его не получается, и nginx обрывает ответ.
Как проверить
Шаг 1 выполните на своём компьютере: на Mac — в программе Терминал, в Windows — в командной строке. Если вы ни разу не открывали терминал, начните с инструкции Как открыть терминал: там всё по шагам. Скопируйте команду целиком, замените example.com на адрес своего сайта и нажмите Enter.
Шаг 1. Загрузите страницу командой curl
На Mac:
curl -sS --http1.1 -o /dev/null https://example.com/В Windows:
curl -sS --http1.1 -o NUL https://example.com/Вместо https://example.com/ укажите полный адрес страницы, которая обрывается. Ключ --http1.1 нужен потому, что передача частями бывает только в HTTP/1.1. Ключ -o /dev/null (в Windows — -o NUL) не сохраняет страницу, а -sS оставляет на экране только сообщения об ошибках.
Если страница пришла полностью, curl ничего не напишет. Если ответ оборвался, появится строка с номером 18, например:
curl: (18) transfer closed with outstanding read data remainingНомер 18 значит, что страница пришла не целиком. Текст после номера может быть другим, например с числом недошедших байт, — важен сам номер.
Если обрыв случается не каждый раз, выполните команду несколько раз подряд.
Шаг 2. Найдите обрыв в журнале ошибок nginx
Этот и следующий шаги выполняются на сервере. Если вы ещё не подключались к нему, начните с инструкции Как подключиться к VPS по SSH.
Сразу после того, как страница оборвалась, выполните команду:
sudo tail -n 50 /var/log/nginx/error.logКоманда выведет 50 последних строк журнала ошибок nginx, самые свежие записи — в конце. Найдите среди них строки с такими словами:
| Слова в журнале | Что случилось |
|---|---|
| upstream prematurely closed | Программа сайта оборвала соединение, не закончив ответ |
| upstream timed out | nginx не дождался от программы следующей порции данных |
| No space left on device | Диск сервера заполнен |
Слова while reading upstream в той же строке значат, что ответ оборвался, когда страница уже шла к посетителю, — это и есть причина этой ошибки. Если там написано while reading response header from upstream, программа подвела раньше, до начала ответа. Тогда посетитель видит не эту ошибку, а 502 Bad Gateway или 504 Gateway Timeout.
Шаг 3. Проверьте, есть ли место на диске
df -hКоманда выведет список дисков сервера. Нужна строка, где в последнем столбце, Mounted on, стоит одна косая черта /. Если в столбце Use% у неё 100%, свободного места не осталось.
Как исправить
Если программа сайта не заканчивает ответ
Посмотрите журнал самой программы за то же время, что и запись в журнале nginx: если программа завершилась с ошибкой, причина будет там. Для программы, запущенной как служба, последние 50 строк журнала выводит команда sudo journalctl -u имя_службы -n 50.
Исправьте ошибку, перезапустите программу и повторите шаг 1.
Если nginx не дожидается программы
Сначала попробуйте ускорить саму программу. Если она по делу отвечает долго — например, собирает большой отчёт, — увеличьте время ожидания в nginx. Откройте файл настроек сайта, например командой sudo nano /etc/nginx/sites-available/example.com, найдите блок location со строкой proxy_pass и добавьте в него строку:
proxy_read_timeout 300s;С ней nginx будет ждать каждую следующую порцию данных до 300 секунд — пяти минут — вместо 60. Для сайта на PHP, у которого в блоке location стоит fastcgi_pass, а не proxy_pass, добавьте другую строку:
fastcgi_read_timeout 300s;Сохраните файл — Ctrl+O, Enter, затем Ctrl+X — и проверьте настройки:
sudo nginx -tВ ответе должны быть слова syntax is ok и test is successful. Если вместо них сообщение об ошибке, в нём указаны файл и номер строки: исправьте строку и проверьте снова. Когда проверка прошла, примените настройки:
sudo systemctl reload nginxЕсли команда ничего не ответила, настройки применены. Затем повторите шаг 1.
Если диск заполнен
Узнайте, какие папки занимают больше всего места:
sudo du -xh --max-depth=2 / 2>/dev/null | sort -h | tail -n 20Команда посчитает размер папок и выведет 20 самых больших. Это может занять минуту-другую. В последней строке — весь диск, выше — самые крупные папки. Удаляйте только то, что точно не нужно: например, старые архивы и резервные копии, которые вы делали сами. Системные папки — /usr, /lib, /boot — не трогайте. Если не знаете, нужен ли файл, оставьте его.
Когда место освободится, повторите шаг 1. Перезапускать nginx не нужно.
Передачу частями выключать не нужно
В nginx есть настройка chunked_transfer_encoding off, которая выключает передачу частями. Причину обрыва она не устраняет: nginx просто станет отправлять такие страницы по-другому, а обрываться они будут по-прежнему.
На обычном хостинге
На обычном хостинге настройками nginx и дисками сервера занимается хостинг. Напишите в поддержку адрес страницы, время, когда она оборвалась, и код ошибки ERR_INCOMPLETE_CHUNKED_ENCODING.
Соседние ошибки
| Ошибка | Чем отличается |
|---|---|
| ERR_CONTENT_LENGTH_MISMATCH | Тоже обрыв, но сервер заранее назвал длину страницы |
| ERR_EMPTY_RESPONSE | Сервер закрыл соединение, ничего не ответив — даже заголовков |
| ERR_CONTENT_DECODING_FAILED | Страница пришла, но браузер не смог её распаковать |
| 502 Bad Gateway | Программа подвела до начала ответа, и nginx вернул страницу с ошибкой |
Источники
- Исходный код Chromium: net_error_list.h — ошибка -355; localized_error.cc — что Chrome пишет на странице ошибки.
- RFC 9112, раздел 7.1 — как устроена передача частями и чем она заканчивается; раздел 8 — когда такой ответ считается неполным.
- RFC 9113, раздел 8.1 — в HTTP/2 передача частями не используется.
- Документация curl — ключи --http1.1 и -o, код выхода 18.
- Документация nginx: chunked_transfer_encoding, proxy_buffering, proxy_read_timeout и fastcgi_read_timeout.
- Исходный код nginx: ngx_http_chunked_filter_module.c — когда nginx отправляет ответ частями; ngx_http_gzip_filter_module.c — при сжатии nginx убирает Content-Length; ngx_http_upstream.c — как nginx обрывает ответ, если программа подвела посреди ответа.
Проверено в Chrome 155 на локальном тестовом сервере 8 октября 2026 года.
Сверено 8 октября 2026 года.
Что почитать дальше
- ERR_CONTENT_LENGTH_MISMATCH — что делать, если обрывается страница с заранее известной длиной.
- 502 Bad Gateway — что делать, если nginx не получил от программы сайта правильный ответ.
- «Не удается получить доступ к сайту» — коды ошибок Chrome и что они значат.
Проверено и обновлено: 08.10.2026