Metode de plată Abuse

Ошибка cerere header sau cookie prea mare Nginx

01.02.2024, 23:37

Eroarea"request header or cookie too large" în Nginx apare atunci când dimensiunea antetelor de cerere sau a cookie-urilor depășește dimensiunea maximă permisă, care este stabilită în configurația serverului. În acest articol vom analiza în detaliu de ce se întâmplă acest lucru.

Ce înseamnă eroarea Request header sau cookie too large în Nginx?

Eroarea apare atunci când dimensiunea antetelor de solicitare HTTP/HTTPS depășește limita permisă. De exemplu, browserul trimite prea multe cookie-uri sau solicitarea trimisă către serverul web este prea mare.

Solicitarea este de obicei împărțită în două părți: antetele - unde se află informațiile generale și metadatele, și corpul solicitării. Corpul cererii, precum și antetul pot avea dimensiuni diferite - atât mici, cât și mari, iar dimensiunea sa nu cauzează, de obicei, probleme. Cu toate acestea, dacă setările serverului web au un parametru de limitare a lungimii antetului cererii, este posibil să primiți această eroare.

Cum să o remediați?

Există mai multe modalități de rezolvare a problemei

  1. Creșteți dimensiunea maximă a antetelor și a cookie-urilor în configurația Nginx. Pentru a face acest lucru, adăugați următoarele linii la fișierul de configurare nginx.conf.
  2. Ștergeți cookie-urile browserului. Dacă problema apare pe un singur computer sau dispozitiv, ștergerea cookie-ului browserului poate ajuta.
  3. Utilizați un alt browser sau dispozitiv. Dacă problema apare doar pe un singur browser sau dispozitiv, atunci încercați să utilizați un alt browser sau dispozitiv.
  4. Utilizați solicitarea POST în loc de GET. Dacă problema apare atunci când trimiteți o cerere GET cu parametri mari, puteți încerca să utilizați o cerere POST în loc de GET.
  5. Împărțiți solicitarea în mai multe solicitări mai mici. Dacă este imposibil să modificați configurația serverului, puteți încerca să împărțiți solicitarea în mai multe solicitări mai mici prin trimiterea lor secvențială.

Pentru a remedia această eroare (dacă sunteți administrator al serverului web Nginx) trebuie să măriți dimensiunea maximă a antetului prin modificarea parametrului large_client_header_buffers. Dacă sunteți un utilizator obișnuit al site-ului web unde a apărut această eroare, ar trebui să așteptați până când administratorul resursei corectează eroarea.

Corecție din partea serverului web Nginx

Trebuie să ajustați parametrul large_client_header_buffers, care ia 2 numere, de exemplu 4 și 8 (care sunt setate implicit). Primul număr este valoarea care stabilește numărul maxim de tampoane, iar al doilea număr este dimensiunea tamponului în care este citit antetul cererii. Al doilea parametru este stabilit în kilobytes.

Această linie este adăugată la secțiunea http a fișierului de configurare Nginx sau la secțiunea server pentru un anumit site. Fișierele de configurare a site-ului Nginx sunt de obicei stocate în /etc/nginx/conf.d/ sau /etc/nginx/sites-available/ (în funcție de modul în care a fost instalat Nginx - folosind depozitele standard ale sistemului de operare sau folosind depozitul Nginx).

Pentru a ajusta valoarea, puteți seta numerele 8 și 64 potrivite pentru stocarea antetelor mari. Parametrul va arăta astfel:

large_client_header_buffers 8 64k;

Odată ce au fost efectuate modificări în fișierul de configurare, Nginx trebuie repornit utilizând comanda:

sudo systemctl reload nginx

Acestea sunt metodele de rezolvare a acestei probleme.