De fout"request header of cookie te groot
" in Nginx treedt op wanneer de grootte van request headers of cookies de maximaal toegestane grootte overschrijdt, die is ingesteld in de serverconfiguratie. In dit artikel analyseren we in detail waarom dit gebeurt.
De fout treedt op wanneer de grootte van HTTP/HTTPS request headers de toegestane limiet overschrijdt. De browser stuurt bijvoorbeeld te veel cookies of het verzoek dat naar de webserver wordt gestuurd is te groot.
Het verzoek bestaat meestal uit twee delen: headers - waar algemene informatie en metagegevens staan - en de verzoektekst. De body van het verzoek en de header kunnen verschillende groottes hebben - zowel klein als groot en de grootte veroorzaakt meestal geen problemen. Als de webserverinstellingen echter een parameter hebben om de lengte van de verzoekheader te beperken, is de kans groot dat u deze fout krijgt.
Er zijn verschillende manieren om het probleem op te lossen
nginx.conf
.POST-verzoek
in plaats van een GET-verzoek
. Als het probleem optreedt bij het verzenden van een GET-verzoek
met grote parameters, kunt u proberen een POST-verzoek
te gebruiken in plaats van GET
.Om deze fout op te lossen (als je een beheerder van de Nginx webserver bent) moet je de maximale headergrootte verhogen door de parameter large_client_header_buffers
te wijzigen. Als je een gewone gebruiker bent van de website waar deze fout is opgetreden, moet je wachten tot de beheerder van de bron de fout heeft gecorrigeerd.
Je moet de parameter large_client_header_buffers
aanpassen, die 2 getallen bevat, bijvoorbeeld 4 en 8 (die standaard zijn ingesteld). Het eerste getal is de waarde die het maximale aantal buffers instelt en het tweede getal is de grootte van de buffer waarin de request header wordt gelezen. De tweede parameter wordt ingesteld in kilobytes.
Deze regel wordt toegevoegd aan de http sectie van het Nginx configuratiebestand of aan de server sectie voor een bepaalde site. Nginx website configuratiebestanden worden meestal opgeslagen in /etc/nginx/conf.d/
of /etc/nginx/sites-available/
(afhankelijk van hoe Nginx is geïnstalleerd - met behulp van standaard besturingssysteem repositories of met behulp van Nginx repository).
Om de waarde aan te passen kun je de getallen 8 en 64 instellen, geschikt voor het opslaan van grote headers. De parameter ziet er dan zo uit:
large_client_header_buffers 8 64k;
Zodra er wijzigingen zijn aangebracht in het configuratiebestand, moet Nginx opnieuw worden opgestart met het commando:
sudo systemctl reload nginx
Dit zijn de methoden om dit probleem op te lossen.