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

Ошибка 400 Bad Request Nginx встречается достаточно редко. Она означает, что запрос к серверу был сформирован неверно, и поэтому отклонен. Это может быть вызвано разными причинами. Например, один из HTTP заголовков был изменен, а поля контрольных сумм не исправлены и так далее.

В этой статье мы рассмотрим частный случай данной ошибки — Request header or cookie too large Nginx. Разберем что является причиной этой ошибки, почему она может возникать и как ее исправить.

Что означает Request header or cookie too large Nginx

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

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

  • Исправить код сайта — естественно, что браузер не будет сам выдавать вам такие запросы. Они — результат ошибки в коде сайта, а значит исправив код — вы решите проблему;
  • Увеличить максимальный размер заголовка — если же вы уверены, что заголовок должен быть большим и это нормально для вашего сайта, то, возможно, стоит увеличить лимиты на размер заголовка в Nginx;
  • Если вы пользователь, то ждать пока ошибку исправит администратор ресурса.

Как исправить Request header or cookie too large Nginx

За максимальный размер передаваемого пакета отвечают три параметра, которые нужно разместить в секции http:

  • client_body_buffer_size — размер буфера для тела запроса;
  • client_header_buffer_size — размер буфера для заголовка;
  • large_client_header_buffers — максимальное количество и размер буфера для чтения большого заголовка.

Больше всего нас интересует последняя строка. Первым парамтером передается количество буферов, а вторым размер каждого из них. Если размер заголовка превысит размер одного буфера, то пользователь получит ошибку 414. По умолчанию размер одного буфера равняется 8 килобайт. Делаем размер буфера для обычных запросов равным 8 килобайт:

client_header_buffer_size 8k;

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

large_client_header_buffers 8 64k;

Эти строки нужно добавить в секцию http перед всеми секциями server. Дальше можете перезагрузить Nginx:

nginx -s reload

И проверить воспроизводится ли ошибка. Если все было сделано правильно, то ошибки больше быть не должно.

Источник

Понравилась статья? Поделиться с друзьями: