Der Fehler"Anfrage-Header oder Cookie zu groß
" in Nginx tritt auf, wenn die Größe von Anfrage-Headern oder Cookies die maximal zulässige Größe überschreitet, die in der Serverkonfiguration festgelegt ist. In diesem Artikel werden wir im Detail analysieren, warum dies geschieht.
Der Fehler tritt auf, wenn die Größe der HTTP/HTTPS-Anfrage-Header die zulässige Grenze überschreitet. Zum Beispiel sendet der Browser zu viele Cookies oder die an den Webserver gesendete Anfrage ist zu groß.
Die Anfrage ist in der Regel in zwei Teile gegliedert: die Header, in denen sich allgemeine Informationen und Metadaten befinden, und den Request Body. Sowohl der Request Body als auch die Header können unterschiedlich groß sein - sowohl klein als auch groß, und ihre Größe verursacht normalerweise keine Probleme. Wenn die Einstellungen des Webservers jedoch einen Parameter zur Begrenzung der Länge des Request Headers enthalten, wird dieser Fehler wahrscheinlich auftreten.
Es gibt mehrere Möglichkeiten, das Problem zu beheben
nginx.conf
ein.POST-Anfrage
anstelle einer GET-Anfrage
. Wenn das Problem beim Senden einer GET-Anforderung
mit großen Parametern auftritt, können Sie versuchen, eine POST-Anforderung
anstelle einer GET-Anforderung
zu verwenden.Um diesen Fehler zu beheben (wenn Sie ein Administrator des Nginx-Webservers sind), sollten Sie die maximale Header-Größe erhöhen, indem Sie den Parameter large_client_header_buffers
ändern. Wenn Sie ein normaler Benutzer der Website sind, auf der dieser Fehler aufgetreten ist, sollten Sie warten, bis der Administrator der Ressource den Fehler behoben hat.
Sie müssen den Parameter large_client_header_buffers
anpassen, der zwei Zahlen, z. B. 4 und 8 (die standardmäßig eingestellt sind), enthält. Die erste Zahl ist der Wert, der die maximale Anzahl von Puffern festlegt, und die zweite Zahl ist die Größe des Puffers, in den der Request-Header gelesen wird. Der zweite Parameter wird in Kilobytes angegeben.
Diese Zeile wird in den http-Abschnitt der Nginx-Konfigurationsdatei oder in den Server-Abschnitt für eine bestimmte Website eingefügt. Nginx-Website-Konfigurationsdateien werden normalerweise in /etc/nginx/conf.d/
oder /etc/nginx/sites-available/
gespeichert (je nachdem, wie Nginx installiert wurde - mit den Standard-Betriebssystem-Repositories oder mit dem Nginx-Repository).
Um den Wert anzupassen, können Sie die Zahlen 8 und 64 einstellen, die für die Speicherung großer Header geeignet sind. Der Parameter sieht dann wie folgt aus:
large_client_header_buffers 8 64k;
Sobald die Änderungen an der Konfigurationsdatei vorgenommen wurden, sollte Nginx mit dem Befehl neu gestartet werden:
sudo systemctl reload nginx
Dies sind die Methoden, um dieses Problem zu beheben.