Помилка"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
Ось такими методами усувається ця проблема.