Betalingsmetoder Abuse

Ошибка request header eller cookie for stor Nginx

  • Hjem
  • Videnbase
  • Ошибка request header eller cookie for stor Nginx
01.02.2024, 23:37

Fejlen"request header or cookie too large" i Nginx opstår, når størrelsen på request headers eller cookies overskrider den maksimalt tilladte størrelse, som er indstillet i serverkonfigurationen. I denne artikel analyserer vi i detaljer, hvorfor det sker.

Hvad fejlen Request header eller cookie too large i Nginx betyder

Fejlen opstår, når størrelsen på HTTP/HTTPS-anmodningsheaders overskrider den tilladte grænse. For eksempel sender browseren for mange cookies, eller den anmodning, der sendes til webserveren, er for stor.

Anmodningen er normalt opdelt i to dele: headers - hvor generelle oplysninger og metadata er placeret, og request body. Request body og header kan have forskellige størrelser - både små og store, og størrelsen giver normalt ingen problemer. Men hvis webserverens indstillinger har en parameter, der begrænser længden af request headeren, vil du sandsynligvis få denne fejl.

Hvordan løser man det?

Der er flere måder at løse problemet på

  1. Øg den maksimale størrelse på headers og cookies i Nginx-konfigurationen. Det gør du ved at tilføje følgende linjer til konfigurationsfilen nginx.conf.
  2. Ryd browserens cookies. Hvis problemet kun opstår på én computer eller enhed, kan det hjælpe at rydde browsercookies.
  3. Brug en anden browser eller enhed. Hvis problemet kun opstår på én browser eller enhed, så prøv at bruge en anden browser eller enhed.
  4. Brug POST-anmodning i stedet for GET. Hvis problemet opstår, når du sender en GET-anmodning med store parametre, kan du prøve at bruge en POST-anmodning i stedet for GET.
  5. Opdel anmodningen i flere mindre anmodninger. Hvis det er umuligt at ændre serverkonfigurationen, kan du prøve at opdele anmodningen i flere mindre anmodninger ved at sende dem sekventielt.

For at løse denne fejl (hvis du er administrator af Nginx-webserveren) skal du øge den maksimale headerstørrelse ved at ændre parameteren large_client_header_buffers. Hvis du er en almindelig bruger af det websted, hvor denne fejl opstod, bør du vente, indtil administratoren af ressourcen har rettet fejlen.

Korrektion fra Nginx-webserverens side

Du skal justere parameteren large_client_header_buffers, som tager 2 tal, f.eks. 4 og 8 (som er indstillet som standard). Det første tal er den værdi, der indstiller det maksimale antal buffere, og det andet tal er størrelsen på den buffer, som request-headeren læses ind i. Den anden parameter indstilles i kilobyte.

Denne linje tilføjes til http-afsnittet i Nginx-konfigurationsfilen eller til serverafsnittet for et bestemt websted. Konfigurationsfiler til Nginx-hjemmesider gemmes normalt i /etc/nginx/conf.d/ eller /etc/nginx/sites-available/ (afhængigt af, hvordan Nginx blev installeret - ved hjælp af standardoperativsystemarkiver eller ved hjælp af Nginx-arkiver).

For at justere værdien kan du indstille tallene 8 og 64, der passer til lagring af store headere. Parameteren vil se sådan ud:

large_client_header_buffers 8 64k;

Når der er foretaget ændringer i konfigurationsfilen, skal Nginx genstartes ved hjælp af kommandoen:

sudo systemctl reload nginx

Dette er metoderne til at løse dette problem.