A"túl nagy kérési fejléc vagy cookie
" hiba az Nginxben akkor jelentkezik, ha a kérési fejlécek vagy cookie-k mérete meghaladja a kiszolgáló konfigurációjában beállított maximális megengedett méretet. Ebben a cikkben részletesen elemezzük, hogy miért történik ez.
A hiba akkor jelentkezik, ha a HTTP/HTTPS kérés fejlécének mérete meghaladja a megengedett határértéket. Például a böngésző túl sok sütit küld, vagy a webkiszolgálónak küldött kérés túl nagy.
A kérés általában két részre oszlik: a fejlécekre - ahol az általános információk és metaadatok találhatók - és a kérés testére. A kérés teste, valamint a fejléc különböző méretű lehet - kicsi és nagy egyaránt, és mérete általában nem okoz problémát. Ha azonban a webkiszolgáló beállításaiban van olyan paraméter, amely korlátozza a kérés fejlécének hosszát, akkor valószínűleg ezt a hibát kapja.
A probléma megoldásának több módja is van
nginx.conf
konfigurációs fájlhoz.GET
helyett használjon POST
kérést. Ha a probléma nagy paraméterekkel rendelkező GET-kérés
küldésekor jelentkezik, akkor próbálja meg GET
helyett POST-kérést
használni.A hiba kijavításához (ha Ön az Nginx webkiszolgáló rendszergazdája) növelje a maximális fejlécméretet a large_client_header_buffers
paraméter módosításával. Ha Ön annak a weboldalnak a hétköznapi felhasználója, ahol ez a hiba előfordult, várnia kell, amíg az erőforrás rendszergazdája kijavítja a hibát.
Be kell állítania a large_client_header_buffers
paramétert, amely 2 számot vesz fel, például 4 és 8 (amelyek alapértelmezés szerint be vannak állítva). Az első szám az az érték, amely a maximális pufferek számát állítja be, a második szám pedig annak a puffernek a mérete, amelybe a kérés fejlécét beolvassa. A második paraméter kilobájtban van megadva.
Ezt a sort az Nginx konfigurációs fájl http szakaszához vagy egy adott webhely szerver szakaszához kell hozzáadni. Az Nginx weboldal konfigurációs fájljai általában az /etc/nginx/conf.d/
vagy az /etc/nginx/sites-available/
állományban találhatók (attól függően, hogy az Nginx hogyan lett telepítve - az operációs rendszer szabványos tárolóinak használatával vagy az Nginx tárolójának használatával).
Az érték beállításához a 8-as és 64-es számokat állíthatjuk be, amelyek alkalmasak a nagy fejlécek tárolására. A paraméter így fog kinézni:
large_client_header_buffers 8 64k;
A konfigurációs fájlban végzett módosítások után az Nginxet újra kell indítani a parancs segítségével:
sudo systemctl reload nginx
Ezek a módszerek a probléma megoldására.