SystemdDoctor
мешает работе nginx загрузка файлов

nginx 413 Request Entity Too Large

Ошибка 413 приходит от nginx до того, как запрос дойдёт до приложения: размер тела превысил client_max_body_size (по умолчанию 1 МБ). Менять нужно и его, и ограничения самого приложения.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Предел размера тела запроса мал

    Значение по умолчанию рассчитано на обычные формы, а не на загрузку файлов.

  2. Приложение ограничивает размер отдельно

    У PHP это свои настройки размера загружаемого файла и тела запроса. Подняв предел в nginx, легко забыть про них.

  3. Правка внесена не в тот блок

    Значение из блока server перекрывается значением из location. Правка в общем блоке не действует на нужный путь.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Все объявления предела в итоговой конфигурации.

sudo nginx -T 2>/dev/null | grep -n client_max_body_size

Подтверждение отказа и путь запроса.

sudo tail -20 /var/log/nginx/error.log | grep -i "too large"

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Предел размера тела запроса мал
Почему происходит
Значение по умолчанию рассчитано на обычные формы, а не на загрузку файлов.
Как проверить
Посмотрите действующее значение.
sudo nginx -T 2>/dev/null | grep -i client_max_body_size
Как исправить
Поднимите предел в нужном блоке и перезагрузите настройки. Лучше в конкретном location, а не на весь сервер.
sudo nginx -t && sudo systemctl reload nginx
2. Приложение ограничивает размер отдельно
Почему происходит
У PHP это свои настройки размера загружаемого файла и тела запроса. Подняв предел в nginx, легко забыть про них.
Как проверить
Посмотрите ограничения обработчика.
php -i 2>/dev/null | grep -E "upload_max_filesize|post_max_size"
Как исправить
Согласуйте значения: предел nginx должен быть не меньше предела приложения, иначе запрос отклонится раньше.
3. Правка внесена не в тот блок
Почему происходит
Значение из блока server перекрывается значением из location. Правка в общем блоке не действует на нужный путь.
Как проверить
Посмотрите все объявления в итоговой конфигурации.
sudo nginx -T 2>/dev/null | grep -n -B3 client_max_body_size
Как исправить
Задайте значение в том блоке, который обслуживает путь загрузки.

Пример вывода

Загрузка файла больше предела. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

2026/09/15 15:02:41 [error] 1121#1121: *55 client intended to send too large body: 8388608 bytes, client: <адрес>, server: example.org, request: "POST /upload HTTP/1.1"

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация nginx: client_max_body_size документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено загрузкой файла 8 МБ при пределе 1 МБ.
    собственная проверка, systemd 255
    сверено 15 сентября 2026