Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Nginx Error: client intended to send too large body: Content-Length header Linux / DevOps

Nginx: client intended to send too large body (Content-Length) — Решение

Обновлено: 18.08.2026  ·  Официальная база знаний

Клиент не может загрузить файл на сервер или отправить большой POST/PUT запрос, моментально получая отказ 413 Request Entity Too Large. В системном логе error.log Nginx фиксируется блокировка по заголовку: client intended to send too large body: 52428800 bytes, client: 198.51.100.12, server: upload.example.com, request: "POST /api/upload HTTP/1.1".

Поле ошибкиЗначениеСмысл параметра
Заголовок Content-Length52428800 bytes (~50 MB)Клиент заранее объявил суммарный размер загружаемого файла
Лимит client_max_body_size1m (по умолчанию)Nginx отклоняет запрос ДО чтения тела файла из сокета
HTTP-статус ответа413 Request Entity Too LargeСтандартная блокировка по соображениям безопасности
  • Сброс происходит мгновенно, без задержек на передачу трафика, так как Nginx проверяет заголовок Content-Length на раннем этапе.
  • В Kubernetes Nginx Ingress Controller запросы отсекаются с аналогичной ошибкой.
  1. Откройте конфигурацию виртуального хоста или глобальный файл /etc/nginx/nginx.conf.
  2. Задайте требуемый лимит размера тела запроса в контексте http, server или целевом location:
    # Разрешаем передачу данных размером до 100 Мегабайт:
    client_max_body_size 100M;
  3. Если загрузка больших файлов выполняется только в одну конкретную точку входа (эндпоинт), настройте лимит точечно:
    location /api/v1/files/upload {
        client_max_body_size 250M;
        proxy_pass http://storage_backend;
    }
  4. Если сайт работает в Kubernetes под управлением Ingress-Nginx, добавьте соответствующую аннотацию в манифест ингресса:
    metadata:
      annotations:
        nginx.ingress.kubernetes.io/proxy-body-size: "250m"
  5. Проверьте синтаксис файлов конфигурации и примените изменения:
    sudo nginx -t
    sudo systemctl reload nginx
Оптимизация памяти: Если вы разрешаете загрузку больших файлов (от 50 МБ и выше), убедитесь, что параметр client_body_buffer_size установлен в разумное значение (например, 128k или 256k). Nginx будет аккуратно буферизировать остаток файла во временную директорию на диске (client_body_temp_path), предотвращая исчерпание RAM.
Практический опыт инженера: Если перед Nginx стоит Cloudflare (Free/Pro/Biz), помните о жестком лимите Cloudflare в 100 МБ на один POST-запрос. Файлы больше 100 МБ можно загружать только напрямую на хост мимо оранжевого облака Cloudflare.

Частые вопросы (FAQ)

Почему Nginx блокирует запрос мгновенно?

Потому что клиент отправляет размер тела запроса в заголовке Content-Length. Nginx сравнивает это число с директивой client_max_body_size до начала скачивания тела файла и сразу возвращает 413, экономя сетевой трафик сервера.

Как полностью отключить ограничение на размер загружаемых файлов?

Установите client_max_body_size 0;. В этом случае Nginx не будет ограничивать размер тела запроса.

Что произойдет, если клиент отправляет данные через chunked-encoding без Content-Length?

Nginx будет считывать тело запроса чанк за чанком, непрерывно суммируя полученные байты. Как только суммарный объем превысит client_max_body_size, соединение будет немедленно разорвано со статусом 413.

Нужно ли менять настройки PHP/Python бэкенда при изменении client_max_body_size?

Да, лимиты на бэкенде должны быть согласованы (например, upload_max_filesize и post_max_size в PHP должны быть равны или больше значения в Nginx).