Ошибка "request header or cookie too large
" в Nginx возникает, когда размер заголовков запроса или cookie превышает максимально допустимый размер, который установлен в конфигурации сервера. В этой статье подробно разберем, почему так происходит.
Наши другие статьи по распространенным ошибкам:
Ошибка воспроизводится, когда размер заголовков HTTP/HTTPS запроса больше допустимого предела. Например, браузер отправляет слишком много Cookie файлов или отправленный запрос к веб-серверу имеет слишком большой размер.
Запрос принято разделять на две части: заголовки - где находится общая информация и мета данные, и тело запроса. Тело запроса, как и заголовок может быть разного размера - как маленьким, так и большим и его размер как правило не вызывает никаких проблем. Однако если в настройках веб-сервера задан параметр на ограничение длины заголовка запроса, то есть вероятность получить данную ошибку.
Есть несколько способов решения проблемы
nginx.conf
.POST
запрос вместо GET
. Если проблема возникает при отправке GET
запроса с большими параметрами, то можно попробовать использовать POST
запрос вместо GET
.Для исправления данной ошибки (если вы администратор веб-сервера Nginx) необходимо увеличить максимальный размер заголовка при помощи изменения параметра large_client_header_buffers
. Если же вы обычный пользователь веб-сайта, на котором возникла данная ошибка то необходимо дождаться пока ошибку исправит администратор ресурса.
Вам нужно подкорректировать параметр large_client_header_buffers
, который принимает 2 числа, например 4 и 8 (которые заданы по умолчанию). Первое число - значение, которое задаёт максимальное число буферов, а второе число отвечает за размер буфера, в который считывается заголовок запроса. В второй параметр задаётся в килобайтах.
Данную строку добавляем в секцию http конфигурационного файла конфигурационного файла Nginx или в секцию server для определённого сайта. Конфигурационные файлы веб-сайтов в Nginx обычно хранятся в /etc/nginx/conf.d/
или в /etc/nginx/sites-available/
(в зависимости каким образом был установлен Nginx - при помощи стандартных репозиториев операционной системы или при помощи репозитория Nginx).
Для корректировки значения можно задать числа 8 и 64 подходящие для хранения больших заголовков. Параметр будет выглядеть следующим образом:
large_client_header_buffers 8 64k;
Как только были внесены изменения в конфигурационный файл необходимо перезапустить Nginx при помощи команды:
sudo systemctl reload nginx
Вот такими методами устраняется данная проблема.