Способы оплаты Abuse

Ошибка request header or cookie too large Nginx

01.02.2024, 23:37

Ошибка "request header or cookie too large" в Nginx возникает, когда размер заголовков запроса или cookie превышает максимально допустимый размер, который установлен в конфигурации сервера. В этой статье подробно разберем, почему так происходит. 

Что означает ошибка Request header or cookie too large в Nginx

Ошибка воспроизводится, когда размер заголовков HTTP/HTTPS запроса больше допустимого предела. Например, браузер отправляет слишком много Cookie файлов или отправленный запрос к веб-серверу имеет слишком большой размер.

Запрос принято разделять на две части: заголовки - где находится общая информация и мета данные, и тело запроса. Тело запроса, как и заголовок может быть разного размера - как маленьким, так и большим и его размер как правило не вызывает никаких проблем. Однако если в настройках веб-сервера задан параметр на ограничение длины заголовка запроса, то есть вероятность получить данную ошибку. 

Как исправить?

Есть несколько способов решения проблемы

  1. Увеличить максимальный размер заголовков и cookie в конфигурации Nginx. Для этого нужно добавить следующие строки в файл конфигурации nginx.conf.
  2. Очистить cookie браузера. Если проблема возникает только на одном компьютере или устройстве, то может помочь очистка cookie в браузере.
  3. Использовать другой браузер или устройство. Если проблема возникает только на одном браузере или устройстве, то попробуйте использовать другой браузер или устройство.
  4. Использовать POST запрос вместо GET. Если проблема возникает при отправке GET запроса с большими параметрами, то можно попробовать использовать POST запрос вместо GET.
  5. Разбить запрос на несколько меньших. Если невозможно изменить конфигурацию сервера, то можно попробовать разбить запрос на несколько меньших, отправляя их последовательно.

Для исправления данной ошибки (если вы администратор веб-сервера Nginx) необходимо увеличить максимальный размер заголовка при помощи изменения параметра large_client_header_buffers. Если же вы обычный пользователь веб-сайта, на котором возникла данная ошибка то необходимо дождаться пока ошибку исправит администратор ресурса.

Корректировка со стороны веб-сервера Nginx

Вам нужно подкорректировать параметр 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

Вот такими методами устраняется данная проблема.