413 Request Entity Too Large Nginx — ошибка, которая может появляться при загрузке данных на сайтах, обслуживаемых веб-сервером Nginx. Например, её можно увидеть загружая какой-то архив или видеоролик.
Из текста ошибки следует, что значение определенного параметра для сервера превышено.
Ошибка устраняется корректировкой значения одного параметра в конфигурационном файле Nginx. Дополнительно может потребоваться поменять значения двух параметров в настройках PHP. Для корректировки потребуется root доступ на сервер.
Как выглядит ошибка:
413 Request Entity Too Large Nginx — как исправить ошибку
Максимальный размер файла, загрузка которого возможна определяется директивой client_max_body_size в конфигурационном файле Nginx.
Чтобы ошибка не возникала достаточно отредактировать файл и перезапустить Nginx
mcedit /etc/nginx/nginx.conf
client_max_body_size 100m;
Также можно задать директиву в отдельном файле и подключить его при помощи include в основном конфигурационном файле.
Читайте про структуру файлов с настройками Nginx и используемые контексты.
Тестируем конфигурацию
nginx -t
Если ошибок не выводится (в выводе предыдущей команды должно быть сообщение о том что тест пройден) перезапускаем Nginx
nginx -s reload
Пример вывода при успешно пройденном тесте настроек:
На этом настройка Nginx завершена.
Поскольку подобные сообщения часто выводятся при работе в веб-окружении, обычно при установке каких-то тем или плагинов и загрузке архивов с данными задействуется PHP и его лимиты также будут оказывать влияние.
Увеличим лимиты в php.ini
php.ini — файл, в котором задаются настройки PHP.
Расположение файла в системе проще всего определить загрузив в корень сайта phpinfo.php и обратившись к нему через браузер.
В примере путь к файлу /etc/php/php.ini, редактируем его.
mcedit /etc/php/php.ini
upload_max_filesize = 100M
post_max_size = 100M
В phpinfo помимо пути к файлу php.ini можно проверить актуальные настройки PHP и значения параметров таких как upload_max_filesize и post_max_size
Принудительно завершаем все PHP процессы перезапуская веб-сервер. Веб-сервер это apache2 в Debian /Ubuntu, httpd в CentOS, в команде меняется только имя сервиса.
systemctl restart apache2
Если используется конфигурация с php-fpm нужно перезапустить и эту службу
systemctl restart php-fpm
После произведенных настроек ошибка, говорящая о слишком большой длине запроса, более возникать не должна.
С помощью Nginx можно настраивать отказоустойчивые конфигурации веб-серверов с резервированием.