Ошибка 413 при загрузке в WordPress: Nginx, PHP и лимит запроса

Редакция HOSTIO · Опубликовано 29.10.2026 · Обновлено 29.10.2026

Серверные стойки и сетевое оборудование — тематическая фотография

В материале

Ошибка 413 означает, что один из узлов обработки запроса отверг слишком большое тело. В WordPress это часто обнаруживается при загрузке изображения, ZIP с плагином или импорте. Увеличение лимита в PHP не помогает, если запрос раньше остановил Nginx, CDN или другой прокси. Цель диагностики — установить точный слой и согласовать ограничения, сохранив защиту от чрезмерных запросов.

Фото обложки: Dsimic; 19-inch rackmount Ethernet switches and patch panels.jpg, CC BY-SA 4.0. Уменьшение размеров и преобразование в WebP; кадрирование не выполнялось. Тематический снимок не изображает инфраструктуру упомянутых провайдеров.

Разведите размер файла и размер запроса

Форма загрузки отправляет не только содержимое файла, но и служебные поля с границами multipart. Поэтому лимит всего запроса нельзя рассчитывать впритык к размеру одного вложения. Несколько файлов в одном запросе тоже нужно учитывать суммарно. Сжатый архив и распакованные данные дополнительно различаются по потреблению диска: успешная передача ещё не означает возможность установки.

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

Какие ограничения участвуют

Слой Параметр или условие Как отличить
Внешний прокси/CDN Максимальное тело запроса у сервиса Origin может вообще не получить запрос
Nginx client_max_body_size в применимом контексте В error log может быть причина отклонения
PHP upload_max_filesize и post_max_size Запрос дошёл до PHP, но файл или поля не приняты
WordPress Фильтры, Multisite и ограничения приложения Веб-сервер принял запрос, отказ оформлен приложением
Хранилище Место, inode, временный каталог Передача проходит, сохранение или распаковка — нет

Шаг 1. Сохраните исходный ответ

В инструментах разработчика браузера откройте Network и повторите одну загрузку. Запишите URL, метод, код, время и размер отправляемого файла. Посмотрите тело ответа: страница Nginx, фирменная страница CDN и JSON WordPress дают разные зацепки. Заголовок Server сам по себе не является окончательным доказательством, поскольку его может менять прокси.

Не сохраняйте в общий отчёт Cookie, Authorization и содержимое форм. Для администратора достаточно обезличенного пути, точного времени и идентификатора запроса, если он есть. Сопоставьте наблюдение с access/error log того virtual host, который реально обслуживает домен.

Шаг 2. Найдите применимое правило Nginx

Официальная документация Nginx определяет client_max_body_size как ограничение тела запроса; превышение приводит к 413. Директива может задаваться на разных уровнях конфигурации. Поэтому искать одну строку во всём сервере недостаточно: нужно понять выбранные server и location и наследование настройки.

Владельцу управляемого VPS лучше передать провайдеру конкретный запрос и ожидаемый рабочий размер. На самостоятельном сервере сначала сохраните относящуюся к сайту конфигурацию и определите, управляет ли ею панель. Правка сгенерированного файла может исчезнуть при следующем сохранении домена; предпочтителен штатный механизм пользовательских включений.

# Учебный фрагмент внутри подходящего server/location:
client_max_body_size 32m;
# Проверка синтаксиса выполняется штатным nginx -t
# Применение — только после проверки конфигурации и плана возврата.

32m — пример, а не универсальное значение. Сначала сформулируйте максимальный допустимый рабочий запрос. Не устанавливайте ноль ради устранения симптома: отключение ограничения расширяет ресурсный риск и не исправляет остальные слои.

Шаг 3. Сверьте PHP в веб-окружении

PHP CLI и PHP-FPM могут читать разные настройки. Вывод команды php -i из SSH не доказывает, какие лимиты действуют в запросе WordPress. Проверьте конфигурацию нужного пула и доступные сведения в штатной диагностике сайта, не публикуя общедоступный phpinfo.

upload_max_filesize относится к отдельному загружаемому файлу, post_max_size — к телу POST целиком. Пример с файлом 24 МБ требует запаса под multipart и другие поля. Не связывайте механически memory_limit с размером архива: обработка изображения или распаковка имеют собственные расходы. При импорте также проверьте поддерживаемый способ фоновой обработки.

Шаг 4. Проверьте приложение и временные данные

Когда 413 устранён, может проявиться другая ошибка: запрещённый MIME, отсутствие прав записи, заполненный временный каталог или квота Multisite. Это новый результат, а не доказательство, что первый шаг не помог. Разделите передачу, сохранение и обработку файла в протоколе.

Не исправляйте отказ сохранения через chmod 777. Определите пользователя PHP-FPM, владельца каталога и необходимые минимальные права. Если файл нужен однократно для большого переноса, рассмотрите штатный импорт из подготовленного каталога вместо постоянного увеличения лимитов публичной формы.

Приёмка и возврат

  1. Повторите загрузку небольшого файла и рабочего файла одного формата.
  2. Проверьте появление вложения в медиатеке и открытие самого файла.
  3. Для ZIP проверьте завершение распаковки и достаточный остаток места.
  4. Сверьте журналы и убедитесь, что изменён только нужный сайт.
  5. Запишите окончательные лимиты, причину выбора и исходное значение для возврата.

Если ошибка осталась на внешнем сервисе с неизменяемым пределом, дальнейшее повышение PHP бессмысленно. Нужен другой поддерживаемый маршрут загрузки или изменение процесса. Не обходите защиту публикацией незащищённого origin.

FAQ

413 всегда связан с WordPress?

Нет. Ответ может возникнуть до запуска PHP. Сначала определите узел, который его вернул.

Можно увеличить только upload_max_filesize?

Только если именно это ограничение мешает. Внешний прокси, Nginx и общий POST проверяются отдельно.

Почему один файл проходит, а другой такого же размера — нет?

Проверьте формат, число частей запроса, маршрут и дальнейшую обработку. Одинаковый размер не делает запросы идентичными.

Вывод

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

Ошибка 413 при загрузке в WordPress: Nginx, PHP и лимит запроса: контрольные точки
Редакционная схема HOSTIO: компоненты диагностики. Это не снимок интерфейса и не результат испытания провайдера.

Связанные материалы: 403 Forbidden на WordPress: права, WAF и доступ к нужному маршруту, Логи WordPress и PHP: как собрать данные для исправления ошибки, Заканчивается место на хостинге: диск, inode, архивы и безопасная очистка.

Техническое основание: официальная документация. Проверено 29.10.2026. Порядок приёмки и учебные примеры — редакционная разработка HOSTIO.

Если выбираете площадку с SSH, сначала проверьте состав услуги и ответственность администратора. Посмотреть услуги Beget — партнёрская ссылка HOSTIO; она не подтверждает пригодность любого тарифа для описанной настройки.

↑