Mokėjimo būdai Abuse

Ошибка per didelė užklausos antraštė arba slapukas Nginx

01.02.2024, 23:37

"Nginx" klaida"per didelė užklausos antraštė arba slapukas" atsiranda, kai užklausos antraštės arba slapuko dydis viršija didžiausią leistiną dydį, nustatytą serverio konfigūracijoje. Šiame straipsnyje išsamiai išanalizuosime, kodėl taip nutinka.

Ką reiškia "Nginx" klaida "Request header or cookie too large"?

Klaida atsiranda, kai HTTP/HTTPS užklausos antraštės dydis viršija leistiną ribą. Pavyzdžiui, naršyklė siunčia per daug slapukų arba žiniatinklio serveriui siunčiama užklausa yra per didelė.

Užklausą paprastai sudaro dvi dalys: antraštės - jose pateikiama bendroji informacija ir meta duomenys, ir užklausos kūnas. Užklausos kūnas, kaip ir antraštė, gali būti įvairaus dydžio - ir mažas, ir didelis, o jo dydis paprastai nesukelia jokių problemų. Tačiau jei žiniatinklio serverio nustatymuose yra parametras, kuriuo ribojamas užklausos antraštės ilgis, tikėtina, kad gausite šią klaidą.

Kaip ją ištaisyti?

Yra keletas būdų, kaip išspręsti šią problemą

  1. Padidinkite didžiausią galimą antraštės ir slapukų dydį "Nginx" konfigūracijoje. Norėdami tai padaryti, į konfigūracijos failą nginx.conf įrašykite šias eilutes.
  2. Išvalykite naršyklės slapukus. Jei problema kyla tik viename kompiuteryje ar įrenginyje, gali padėti išvalyti naršyklės slapukus.
  3. Naudokite kitą naršyklę arba įrenginį. Jei problema kyla tik vienoje naršyklėje arba įrenginyje, pabandykite naudoti kitą naršyklę arba įrenginį.
  4. Naudokite POST užklausą vietoj GET. Jei problema kyla siunčiant GET užklausą su dideliais parametrais, galite pabandyti naudoti ne GET, o POST užklausą.
  5. Išskaidykite užklausą į kelias mažesnes užklausas. Jei neįmanoma pakeisti serverio konfigūracijos, galite pabandyti padalyti užklausą į kelias mažesnes užklausas, siųsdami jas paeiliui.

Norėdami ištaisyti šią klaidą (jei esate "Nginx" žiniatinklio serverio administratorius), turėtumėte padidinti didžiausią antraštės dydį pakeisdami parametrą large_client_header_buffers. Jei esate paprastas svetainės, kurioje įvyko ši klaida, naudotojas, turėtumėte palaukti, kol išteklių administratorius ištaisys klaidą.

Pataisymas iš "Nginx" žiniatinklio serverio pusės

Reikia pakoreguoti parametrą large_client_header_buffers, kuriam reikalingi 2 skaičiai, pavyzdžiui, 4 ir 8 (kurie nustatyti pagal nutylėjimą). Pirmasis skaičius yra reikšmė, nustatanti didžiausią buferių skaičių, o antrasis skaičius yra buferio, į kurį skaitoma užklausos antraštė, dydis. Antrasis parametras nustatomas kilobaitais.

Ši eilutė įtraukiama į "Nginx" konfigūracijos failo http skirsnį arba į konkrečios svetainės serverio skirsnį. Paprastai "Nginx" svetainių konfigūracijos failai saugomi /etc/nginx/conf.d/ arba /etc/nginx/sites-available/ (priklausomai nuo to, kaip buvo įdiegta "Nginx" - naudojant standartines operacinės sistemos saugyklas arba naudojant "Nginx" saugyklą).

Norint sureguliuoti reikšmę, galima nustatyti skaičius 8 ir 64, tinkamus didelėms antraštėms saugoti. Parametras atrodys taip:

large_client_header_buffers 8 64k;

Atlikus konfigūracijos failo pakeitimus, "Nginx" reikia paleisti iš naujo naudojant komandą:

sudo systemctl reload nginx

Tai yra šios problemos sprendimo būdai.