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

Помилка заголовка запиту або cookie занадто великий 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

Ось такими методами усувається ця проблема.