Nginx Linux 413

Nginx: 413 Request Entity Too Large при загрузке файла

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Ошибка nginx 413 Request Entity Too Large возникает, когда размер загружаемого файла превышает client_max_body_size. Увеличьте лимит в nginx и в PHP (upload_max_filesize, post_max_size), проверьте лимиты прокси и CDN.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение

#Что означает ошибка

413
413 Request Entity Too Large

По умолчанию nginx ограничивает тело запроса значением client_max_body_size 1m — один мегабайт. Если вы загружаете файл больше, сервер возвращает 413. Но лимит может стоять и выше по цепочке: в PHP, Cloudflare (100 МБ на бесплатном тарифе), балансировщике или в самом приложении. Настройте все звенья цепочки.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Лимит nginxПараметр client_max_body_size слишком мал.Ошибка 413 страница nginx.Увеличьте значение.
Лимиты PHPupload_max_filesize или post_max_size меньше размера файла.Загрузка прерывается без 413 или с ошибкой PHP.Измените php.ini.
Лимит прокси или CDNCloudflare, балансировщик или Ingress ограничивают размер.Ошибка со страницы CDN.Измените лимит прокси.
Лимит приложенияWordPress, Nextcloud, Laravel имеют свои лимиты.Ограничение в админке.Настройте приложение.

#Пошаговое решение

  1. Определите, где ошибкаПри загрузке файла откройте в браузере F12 → «Сеть», выберите неуспешный запрос и прочитайте HTTP-статус. Если 413 выдаёт Nginx, ищите client intended to send too large body в error.log; если код формирует CDN/Ingress, лимит находится на другом уровне. Сохраните размер файла и точный URL запроса.
  2. Откройте конфигАдминистратор по SSH выполните sudo nginx -T 2>&1 | grep -n client_max_body_size и найдите конфигурацию server или location нужного сайта. Сохраните копию файла и обратите внимание на переопределения в более специфичных блоках; не увеличивайте глобальный лимит для всех сайтов.
  3. Добавьте лимитДля файла до выбранного допустимого размера добавьте в соответствующий контекст Nginx client_max_body_size 20m; или иное обоснованное значение. Этот предел относится к общему телу HTTP-запроса; не разрешайте произвольные гигабайтные загрузки, если приложение их не обрабатывает и не проверяет.
  4. Проверьте конфигурациюВыполните sudo nginx -t и убедитесь в syntax is ok и test is successful. При ошибке не применяйте конфигурацию; верните резервную копию или исправьте указанную строку. Только после успешной проверки переходите к reload.
  5. Перезагрузите nginxПримените конфигурацию sudo systemctl reload nginx, затем повторите загрузку файла размера чуть ниже порога. Проверьте error.log, что прежнего 413 больше нет. Полный перезапуск Nginx не требуется для обычной смены директивы.
  6. Настройте PHPЕсли загрузку обрабатывает PHP, проверьте в панели хостинга фактические upload_max_filesize и post_max_size веб-PHP; POST должен вмещать файл плюс остальные поля. После правки параметров перезагружайте только конкретный PHP-FPM нужной версии, а не произвольный пул.
  7. Проверьте timeoutsЕсли большой файл принимается, но загрузка завершается по времени, отдельно проверьте таймауты приложения и reverse proxy; ошибка 413 сама по себе не связана с proxy_read_timeout. Не увеличивайте таймауты без измерения реального времени передачи и последующей обработки.
  8. Проверьте Ingress/CDNЕсли используется Kubernetes Ingress или CDN, проверьте их лимит тела запроса в конфигурации конкретного маршрута. При меньшем ограничении внешнего прокси увеличение Nginx на backend не поможет; после исправления проверьте все уровни и сохраните разумный максимальный размер загрузки.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Проверка и применение конфигурации nginx (требуется sudo).
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Проверка и применение конфигурации nginx (требуется sudo).
    sudo nginx -t
    sudo systemctl reload nginx
    sudo nginx -T | grep client_max_body_size

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

    Вариант 2Пример настройки лимита и таймаутов в блоке server.
    Nginx
    Пример настройки лимита и таймаутов в блоке server.
    server {
        client_max_body_size 100M;
        client_body_timeout 120s;
        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
            fastcgi_read_timeout 300;
            include fastcgi_params;
        }
    }
    Вариант 3Настройки PHP для загрузки больших файлов.
    INI
    Настройки PHP для загрузки больших файлов.
    upload_max_filesize = 100M
    post_max_size = 110M
    memory_limit = 256M
    max_execution_time = 300

Значение post_max_size должно быть не меньше upload_max_filesize. Параметр client_max_body_size 0; полностью отключает проверку, но так делать на публичном сервере не стоит — это открывает путь к перегрузке диска. Для WordPress дополнительно проверьте константу WP_MEMORY_LIMIT и ограничение в Multisite. Справка — документация nginx.

Проверить, какой лимит реально применяется, можно командой sudo nginx -T | grep -n client_max_body_size: она покажет все места, где параметр задан, и приоритет всегда у самого вложенного блока (location важнее server, server важнее http). Если после правки ошибка осталась, убедитесь, что вы перезагрузили именно тот nginx, который обслуживает сайт (в Docker — внутри контейнера), и очистите кэш браузера. Для загрузки очень больших файлов лучше использовать чанковую загрузку или прямую загрузку в объектное хранилище, а не повышать лимит до гигабайтов.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.