client intended to send too large body можно увидеть в логах Nginx когда клиент пытается загрузить какой-то файл, размер которого превышает установленный в конфигурации лимит. Это может быть большое изображение, PDF файл или что-то подобное.
Ошибка client intended to send too large body и как ее исправить
Ошибка в логе веб-сервера может выглядеть так:
tail -n 100 /var/log/nginx/error.log
referrer: «http://example.com/webasyst/shop/?action=products»
2018/02/15 12:31:40 [error] 27335#0: *14419 client intended to send too large body: 1492176 bytes, client: 123.123.123.123, server: example.com, request: «POST /webasyst/shop/?module=pages&action=uploadimage&r=2 HTTP/1.1», host: «example.com», referrer: «http://example.com/webasyst/shop/?action=products»
Чтобы исправить ее достаточно в основном конфигурационном файле пакета прописать директиву client_max_body_size и указать ее значение. Например, задав лимит в 40 Мб.
Директива размещается в блоке http nginx.conf
mcedit /etc/nginx/nginx.conf
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
…
client_max_body_size 40m;
…
}
}
Пример с фрагментом конфигурационного файла и результат проверки конфигурации приведен на скриншоте:
Проверяем конфигурацию, убеждаемся в том, что ошибок в выводе нет
nginx -t
Перезапускаем веб-сервер
nginx -s reload
После исправления этой ошибки в логах может появиться другая — upstream sent too big header while reading response header from upstream. Причины те же, и вторая ошибка также легко устраняется раскручиванием других лимитов.
Если используется PHP стоит убедиться еще и в том, что ограничения в PHP не станут препятствием при загрузке больших файлов. При необходимости правится upload_max_filesize в php.ini
Проверить актуальные настройки PHP можно добавив в корень сайта скрипт phpinfo и обратившись к нему через браузер.