Ошибка 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 килобайт:
Затем создаем восемь буферов с размером 64 килобайта для хранения больших заголовков. Буферы выделяются по мере надобности, так что за потребление памяти можно особо не опасаться:
Эти строки нужно добавить в секцию http перед всеми секциями server. Дальше можете перезагрузить Nginx:
nginx -s reload
И проверить воспроизводится ли ошибка. Если все было сделано правильно, то ошибки больше быть не должно.
Выводы
В этой небольшой статье мы рассмотрели что делать с ошибкой request header or cookie too large nginx. Если у вас есть доступ к серверу, на котором расположен сайт по ssh, то вы можете исправить ее за несколько минут. Если у вас остались вопросы, спрашивайте в комментариях!