Ошибка HTTP при загрузке / 413 Request Entity Too Large / 403 Forbidden
#Что отличает эту ошибку
Здесь запрос на загрузку отклоняется на уровне веб-сервера, WAF, CDN или плагина безопасности ещё до обработки WordPress. В браузере в консоли (F12 → вкладка «Network») при этом виден код ответа: 413 (слишком большое тело запроса), 403 (запрещено правилом mod_security или плагином), 502/504 (сбой/таймаут прокси), 500 (ошибка PHP). Код ответа сразу указывает, где искать причину, поэтому начните с него.
#Причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Лимит nginx 1 МБЗначение по умолчанию. | 413 на файлы больше 1 МБ. | client_max_body_size. |
| ModSecurity или WAFПравило срабатывает. | 403 на загрузку. | Попросите хостинг исключить правило. |
| Плагин безопасностиWordfence и др. | Блокирует. | Отключите проверку или добавьте исключение. |
| Cloudflare или CDNЛимит запроса. | 413/520. | Загружайте напрямую по IP или настройте правила. |
| Таймаут PHP-FPM или проксиДолгая обработка. | 502/504. | Увеличьте таймауты. |
| Расширение браузераБлокировщик. | Только в одном браузере. | Отключите расширения. |
#Диагностика по коду ответа
- Откройте инструменты разработчикаВойдите в WordPress и откройте «Медиафайлы → Добавить новый». В Chrome/Edge нажмите F12 → «Сеть» (Network), включите сохранение журнала, попробуйте загрузить небольшую копию проблемного файла. Найдите запрос загрузки (часто
async-upload.phpлибо запрос REST API — зависит от версии и интерфейса). Не публикуйте HAR-файл: в нём могут быть cookies и токены администратора. - Посмотрите код ответа и тело ответаНажмите на запрос в инструментах разработчика и откройте «Заголовки» и «Ответ». Запишите HTTP-статус и короткую обезличенную часть ответа. 413 относится к размеру, 403 — к правилам доступа, 500 — к приложению, 502/504 — к связи с backend. Ошибка JavaScript в браузере — отдельный случай. Перед правкой конфигурации сопоставьте статус с серверным error.log.
- 413: увеличьте client_max_body_size в nginx и post_max_size в PHPЕсли сервер вернул 413, проверьте фактический размер файла и настройки веб-сервера/веб-PHP. Для Nginx проверьте
client_max_body_size, для PHP —upload_max_filesizeиpost_max_size(последнее должно быть больше первого). Сохраните конфигурацию и поднимайте предел только до согласованного значения; послеnginx -tпримените reload. Перепроверьте загрузку того же файла. - 403: проверьте mod_security, Wordfence и правила WAFЕсли ответ 403, откройте журнал WAF/ModSecurity, прокси или плагина Wordfence и найдите событие по времени/URL. Запишите идентификатор правила и причину; если блокировка ошибочна, создайте узкое исключение для конкретной операции через штатный интерфейс. Не отключайте весь брандмауэр и не ставьте открытые права
777на каталог загрузок. - 502/504: увеличьте таймауты прокси и PHP-FPMПри 502/504 проверьте error.log Nginx и журнал PHP-FPM:
upstream timed out,connect() failed,pm.max_childrenуказывают на разные причины. Сначала устраните остановку пула, ошибку скрипта или перегрузку, а не повышайте все таймауты. Если задача действительно долгая, после оценки ресурсов допустимо менятьfastcgi_read_timeoutдля конкретного маршрута с проверкойnginx -tи возможностью отката. - 500: проверьте журнал ошибок PHPПри HTTP 500 откройте журнал ошибок PHP для данного домена в панели хостинга либо через SSH по действительному пути. Воспроизведите загрузку и найдите строку
Fatal error,Allowed memory size exhaustedили ошибку Imagick/GD. Проверьте поддержку формата и расширения PHP. Не выводите подробные ошибки на публичной странице; исправления проверяйте сначала на тестовой копии. - Проверьте ограничения сети доставки и защитных правилЕсли перед сайтом работает Cloudflare или другая сеть доставки содержимого, найдите в их панели события WAF и ограничения размера запроса для вашего тарифа: лимиты меняются, проверяйте текущую документацию провайдера. Если файл превышает допустимый размер, уменьшите его либо используйте штатную загрузку непосредственно на исходный сервер с контролем доступа; не обходите защиту ради неизвестного файла.
- Попробуйте «Браузерный загрузчик»Для диагностики в WordPress откройте «Медиафайлы → Добавить новый» и, если интерфейс предлагает альтернативную форму загрузки, воспользуйтесь ею. Она может помочь различить ошибку сценария браузера и серверное ограничение, но не обойдёт 413/500. После одной успешной загрузки убедитесь, что файл доступен в медиатеке, миниатюры созданы и в журнале нет новых ошибок.
- Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
#Решение для администраторов без доступа к серверу
Если вы на общем хостинге и не можете менять конфигурацию, обратитесь в поддержку и пришлите время запроса и код ответа. Для временного обхода используйте FTP-загрузку: положите файлы в wp-content/uploads/год/месяц/ и добавьте их в медиатеку плагином «Add From Server» или командой WP-CLI wp media import.