Maksutavat Abuse

Ошибка request header tai cookie liian suuri Nginx

01.02.2024, 23:37

Nginxin"pyyntöotsikko tai eväste liian suuri" -virhe ilmenee, kun pyyntöotsikoiden tai evästeiden koko ylittää palvelimen kokoonpanossa asetetun suurimman sallitun koon. Tässä artikkelissa analysoimme yksityiskohtaisesti, miksi näin tapahtuu.

Mitä Request header or cookie too large -virhe Nginxissä tarkoittaa?

Virhe ilmenee, kun HTTP/HTTPS-pyyntöotsikoiden koko ylittää sallitun rajan. Selain lähettää esimerkiksi liian monta evästettä tai verkkopalvelimelle lähetetty pyyntö on liian suuri.

Pyyntö on yleensä jaettu kahteen osaan: otsikkoihin - joissa sijaitsevat yleiset tiedot ja metatiedot - ja pyynnön runkoon. Pyynnön runko sekä otsikko voivat olla erikokoisia - sekä pieniä että suuria, eikä sen koko yleensä aiheuta ongelmia. Jos verkkopalvelimen asetuksissa on kuitenkin parametri, joka rajoittaa pyynnön otsikon pituutta, saat todennäköisesti tämän virheen.

Miten se korjataan?

Ongelman korjaamiseen on useita tapoja

  1. Suurenna otsikoiden ja evästeiden enimmäiskokoa Nginxin asetuksissa. Tee tämä lisäämällä seuraavat rivit nginx.conf-konfiguraatiotiedostoon.
  2. Tyhjennä selaimen evästeet. Jos ongelma ilmenee vain yhdellä tietokoneella tai laitteella, selaimen evästeiden tyhjentäminen voi auttaa.
  3. Käytä eri selainta tai laitetta. Jos ongelma ilmenee vain yhdessä selaimessa tai laitteessa, kokeile käyttää eri selainta tai laitetta.
  4. Käytä POST-pyyntöä GET-pyynnön sijaan. Jos ongelma ilmenee lähetettäessä GET-pyyntöä, jossa on suuria parametreja, voit kokeilla käyttää POST-pyyntöä GET-pyynnön sijasta.
  5. Jaa pyyntö useisiin pienempiin pyyntöihin. Jos palvelimen kokoonpanon muuttaminen on mahdotonta, voit kokeilla pyynnön jakamista useisiin pienempiin pyyntöihin lähettämällä ne peräkkäin.

Korjataksesi tämän virheen (jos olet Nginx-verkkopalvelimen ylläpitäjä) sinun tulisi kasvattaa otsakkeiden enimmäiskokoa muuttamalla parametria large_client_header_buffers. Jos olet tavallinen käyttäjä verkkosivustolla, jossa tämä virhe tapahtui, sinun pitäisi odottaa, kunnes resurssin ylläpitäjä korjaa virheen.

Nginx-verkkopalvelimen tekemä korjaus

Sinun on säädettävä parametria large_client_header_buffers, joka ottaa kaksi numeroa, esimerkiksi 4 ja 8 (jotka on asetettu oletusarvoisesti). Ensimmäinen numero on arvo, joka asettaa puskureiden enimmäismäärän, ja toinen numero on sen puskurin koko, johon pyynnön otsikko luetaan. Toinen parametri asetetaan kilotavuina.

Tämä rivi lisätään Nginxin asetustiedoston http-osioon tai tietyn sivuston palvelinosioon. Nginxin verkkosivuston konfiguraatiotiedostot tallennetaan yleensä tiedostoon /etc/nginx/conf.d/ tai /etc/nginx/sites-available/ (riippuen siitä, miten Nginx on asennettu - käyttöjärjestelmän tavallisten arkistojen avulla tai Nginxin arkiston avulla).

Voit säätää arvoa asettamalla numerot 8 ja 64, jotka sopivat suurten otsikoiden tallentamiseen. Parametri näyttää tältä:

large_client_header_buffers 8 64k;

Kun asetustiedostoon on tehty muutokset, Nginx on käynnistettävä uudelleen komennolla:

sudo systemctl reload nginx

Näillä menetelmillä tämä ongelma voidaan korjata.