[Nginx] Si ta mundim response_status = 0

Artikuj nga seria "shënime në margjinat".

TL:DR:

http2_max_field_size 8k; # do t'ju shpëtojë!

NĂ« njĂ« nga projektet, pas ndryshimit tĂ« logjikĂ«s sĂ« brendshme tĂ« backend-it, fillova tĂ« vĂ« re njĂ« kod pĂ«rgjigje tĂ« çuditshĂ«m nĂ« logje, konkretisht — 0. NĂ« logje duket pak a shumĂ« kĂ«shtu:

{
  "timestamp": "2020-01-17T08:41:51+00:00",
  "remote_addr": "zzz.zzz.zzz.zzz",
  "request_time": 0,
  "upstream_response_time": "",
  "upstream_header_time": "",
  "http_accept_language": "-language",
  "response_status": 0,
  "request": "",
  "host": "example.com",
  "upstream_addr": "",
  "http_referrer": "",
  "request_length": 5854,
  "bytes_sent": 0,
  "http_user_agent": ""
}


Leximi i dokumentacionit dhe kĂ«rkimi nĂ« Google pĂ«r kĂ«tĂ« temĂ« nuk solli asgjĂ« — pasi Ă«shtĂ« thĂ«nĂ« se njĂ« sjellje e tillĂ« ndodh kur klienti mbyll lidhjen pa dĂ«rguar kokat. Dhe ka edhe eksotika tĂ« ndryshme me madhĂ«sinĂ« e buffer-it pĂ«r wsgi_, qĂ« nĂ« rastin tonĂ« nuk ishte aspak e pĂ«rshtatshme.

NĂ« pĂ«rgjithĂ«si, vendosĂ«m se problemi — nuk Ă«shtĂ« problem, duke pasur parasysh qĂ« pĂ«r volumin tonĂ«, nuk ishte aspak kritik.

Saktësisht deri në momentin kur më shqetësoi një problem tjetër: në disa raste lidhjet hapen pa probleme për http, por refuzojnë të punojnë për https, duke dhënë një mesazh të mrekullueshëm: Connection #0 to host example.com left intact
curl: (52) Përgjigje e zbrazët nga serveri

NĂ« logje, ndjekja e kĂ«saj gjĂ«je arriti vetĂ«m pĂ«rmes IP-sĂ« — asnjĂ« kĂ«rkesĂ«, asnjĂ« tĂ« dhĂ«nĂ« tjetĂ«r, siç duket nga shembulli mĂ« sipĂ«r — nuk ka. VetĂ«m statusi i njohur 0, por unĂ« e di qĂ« kĂ«rkesĂ«n nuk e ndĂ«rpreva! Fillova tĂ« kontrolloj se çfarĂ« mund tĂ« ketĂ« shkuar keq. Doli shumĂ« e thjeshtĂ«:

listen 443 ssl http2 backlog=8192;

Pra, nëse përdorni http2 për lidhjet ssl, nuk mjafton vetëm të konfigurosh bufferat e kërkesës, duhet t'i konfigurosh edhe në ngx_http_v2_module, konkretisht:

Sintaksa:	http2_max_field_size madhësia;
Default:	http2_max_field_size 4k;
Konteksti:	http, server

Kufizon madhësinë maksimale të kokës së kërkesës, të kompresuar me HPACK. Kufizimi zbatohet në mënyrë të barabartë për emrin dhe vlerën. Nëse përdoret kodimi i Huffman, madhësia faktike e vargjeve të zbuluara të emrit dhe vlerës mund të jetë më e madhe. Kufizimi i paracaktuar është i përshtatshëm për shumicën e kërkesave.

NĂ« pĂ«rgjithĂ«si, kjo ishte arsyeja. Pse? Sepse gjatĂ«si e lidhjes ishte e madhe — mĂ« shumĂ« se 4k.

Duke e vendosur atĂ« nĂ«, pĂ«r shembull, 8kb (ose aq sa tĂ« mjaftojĂ«) — e zgjidhim problemin.
Këto janë gjërat.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster