Fizetési módok Abuse

Ошибка túl nagy kérési fejléc vagy süti Nginx

01.02.2024, 23:37

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.

Mit jelent a túl nagy kérési fejléc vagy cookie hiba az Nginxben?

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.

Hogyan javítható?

A probléma megoldásának több módja is van

  1. Növelje meg a fejlécek és a cookie-k maximális méretét az Nginx konfigurációjában. Ehhez a következő sorokat kell hozzáadni az nginx.conf konfigurációs fájlhoz.
  2. Törölje a böngésző cookie-kat. Ha a probléma csak egy számítógépen vagy eszközön jelentkezik, a böngésző cookie-k törlése segíthet.
  3. Használjon másik böngészőt vagy eszközt. Ha a probléma csak egy böngészőn vagy eszközön jelentkezik, akkor próbáljon meg másik böngészőt vagy eszközt használni.
  4. 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.
  5. Ossza a kérést több kisebb kérésre. Ha a kiszolgáló konfigurációjának megváltoztatása nem lehetséges, megpróbálhatja a kérést több kisebb kérésre bontani, egymás után elküldve azokat.

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.

Javítás az Nginx webkiszolgáló részéről

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.