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.
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.
Der er flere måder at løse problemet på
nginx.conf.
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
.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.
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.