Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

FILE_UPLOAD_LIMIT_EXCEEDED Linux / DevOps

Траблшутинг загрузки больших файлов: client_max_body_size в Nginx и PHP

Обновлено: 21.08.2026
  • Ошибка 413 Request Entity Too Large от Nginx при загрузке медиафайлов или бэкапов.
  • Загрузка обрывается без ошибок в UI, а массив $_FILES в PHP оказывается пустым.
  • Ошибки Maximum execution time of ... seconds exceeded при передаче медленными клиентами.

1. Настройка лимитов размера тела запроса в Nginx

Добавьте директивы в блок http, server или целевой location:

http {
    # Максимальный размер загружаемого файла (например, 256MB)
    client_max_body_size 256M;

    # Буфер для заголовков тела запроса
    client_body_buffer_size 1M;

    # Таймаут на получение тела запроса между операциями чтения
    client_body_timeout 120s;
}

2. Согласование настроек в php.ini

Отредактируйте конфигурацию php.ini (для FPM: /etc/php/8.2/fpm/php.ini):

; Максимальный размер одного загружаемого файла
upload_max_filesize = 256M

; Суммарный размер POST запроса (должен быть >= upload_max_filesize)
post_max_size = 260M

; Лимит оперативной памяти для скрипта
memory_limit = 512M

; Таймауты на выполнение и обработку входных данных
max_execution_time = 300
max_input_time = 300

3. Тюнинг параметров проксирования в Nginx

Если запрос идет к PHP-FPM или внешнему бэкенду, увеличьте таймауты ответа:

location /upload/ {
    fastcgi_read_timeout 300s;
    fastcgi_send_timeout 300s;
    proxy_read_timeout 300s;
    proxy_connect_timeout 300s;
}

4. Применение настроек

nginx -t && systemctl reload nginx
systemctl restart php8.2-fpm
💡 Практика специалистов: Если веб-сервер временно сбрасывает тело загружаемого файла на диск, убедитесь, что в каталоге /var/lib/nginx/body (client_body_temp_path) достаточно свободного дискового пространства.

Частые вопросы (FAQ)

Почему client_max_body_size 0 не рекомендуется в production?

Значение 0 полностью отключает проверку размера тела запроса. Любой злоумышленник сможет отправить терабайтный HTTP POST поток и вызвать отказ в обслуживании (DoS/OOM).

Каково золотое правило соотношения memory_limit, post_max_size и upload_max_filesize?

Всегда соблюдайте строгое неравенство: memory_limit > post_max_size > upload_max_filesize.

Полезные материалы
Рекомендуем