nginx 413 Request Entity Too Large
Ошибка 413 приходит от nginx до того, как запрос дойдёт до приложения: размер тела превысил client_max_body_size (по умолчанию 1 МБ). Менять нужно и его, и ограничения самого приложения.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Предел размера тела запроса мал
Значение по умолчанию рассчитано на обычные формы, а не на загрузку файлов.
-
Приложение ограничивает размер отдельно
У PHP это свои настройки размера загружаемого файла и тела запроса. Подняв предел в nginx, легко забыть про них.
-
Правка внесена не в тот блок
Значение из блока 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"Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Значение по умолчанию рассчитано на обычные формы, а не на загрузку файлов.
- Как проверить
-
Посмотрите действующее значение.
sudo nginx -T 2>/dev/null | grep -i client_max_body_size
- Как исправить
-
Поднимите предел в нужном блоке и перезагрузите настройки. Лучше в конкретном location, а не на весь сервер.
sudo nginx -t && sudo systemctl reload nginx
- Почему происходит
- У PHP это свои настройки размера загружаемого файла и тела запроса. Подняв предел в nginx, легко забыть про них.
- Как проверить
-
Посмотрите ограничения обработчика.
php -i 2>/dev/null | grep -E "upload_max_filesize|post_max_size"
- Как исправить
- Согласуйте значения: предел nginx должен быть не меньше предела приложения, иначе запрос отклонится раньше.
- Почему происходит
- Значение из блока 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 502 Bad Gateway: connect() failed к приложению nginx работает, а приложение недоступно: connect() failed, connection refused, no such file or directory для сокета. Разбор 502.
- nginx 504 Gateway Time-out: upstream timed out nginx не дождался ответа приложения. Разбор таймаутов proxy_read_timeout и fastcgi_read_timeout, поиск медленных мест.
- nginx 403 Forbidden и Permission denied на файлы сайта nginx отдаёт 403: нет прав на файлы сайта, закрыт каталог по пути, мешает SELinux или AppArmor, нет индексного файла.
- nginx reload не применяет изменения Перезагрузка nginx прошла, а изменения не действуют: правка не в том файле, файл не включён, кеш, старые рабочие процессы.
- nginx: SSL_do_handshake() failed и ошибки TLS Ошибки рукопожатия TLS в журнале nginx: несовпадение версий протокола, отсутствие поддерживаемых наборов шифров, обращение по http к https-порту.
- nginx: [emerg] duplicate listen options и conflicting server name nginx не запускается из-за повторных объявлений: duplicate listen options, conflicting server name, duplicate default server.
- nginx: [emerg] host not found in upstream nginx не запускается: не разрешается имя узла из upstream или proxy_pass. Разбор порядка запуска и работы с именами.
- nginx: [emerg] open() failed при чтении конфигурации nginx не может открыть файл конфигурации, включённый через include, или файл сертификата. Разбор путей и прав.
Где встречается чаще всего
Источники
- Документация nginx: client_max_body_size
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено загрузкой файла 8 МБ при пределе 1 МБ.