[Nginx] Giunsa pagpildi ang response_status = 0

Usa ka artikulo gikan sa kategorya nga "sidenotes".

TL: DR:

http2_max_field_size 8k; # всСх спасСт!

Sa usa sa mga proyekto, human sa pagbag-o sa pipila ka internal nga lohika sa backend, nagsugod ako sa pag-obserbar sa usa ka katingad-an nga response_code sa mga troso, nga mao ang 0. Sa mga troso kini ingon niini:

{
  "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": ""
}


Ang pagbasa sa dokumentasyon ug pag-googling sa kini nga hilisgutan wala’y nahimo - tungod kay... Gipahayag nga kini nga pamatasan mahitabo kung gisira sa kliyente ang koneksyon nga wala gipasa ang mga ulohan. Aw, ug lain-laing mga exotic nga mga butang uban sa buffer gidak-on alang sa wsgi_, nga sa atong kaso dili mohaom sa pulong "sa bisan unsa nga paagi".

Sa kinatibuk-an, nakahukom kami nga ang problema dili usa ka problema, nga gikonsiderar ang kamatuoran nga sa among mga volume dili kini kritikal.

Eksakto hangtod nga nalibog ko sa mosunod nga problema: sa pipila ka mga kaso, ang mga link bukas nga walay mga problema pinaagi sa http, apan hingpit nga nagdumili sa pagtrabaho pinaagi sa https, nga naghimo sa talagsaon nga: Ang koneksyon #0 sa pag-host sa example.com wala'y intact
curl: (52) Walay sulod nga tubag gikan sa server

Sa mga troso, nakahimo kami sa pagsubay niini nga butang pinaagi lamang sa IP - wala'y hangyo o bisan unsang ubang datos, ingon sa makita gikan sa panig-ingnan sa ibabaw. Ang bantog ra nga kahimtang mao ang 0, apan nahibal-an nako nga wala nako gibalda ang hangyo! Nagsugod ako sa paghunahuna kung unsa ang mahimong sayup. Ug ang tanan nahimong yano kaayo:

paminaw sa 443 ssl http2 backlog=8192;

Aw, kung mogamit ka og http2 alang sa mga koneksyon sa ssl, nan dili igo nga i-configure ang mga buffer sa hangyo, kinahanglan usab kini nga ma-configure sa ngx_http_v2_module, nga mao:

Бинтаксис:	http2_max_field_size Ρ€Π°Π·ΠΌΠ΅Ρ€;
Π£ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅:	http2_max_field_size 4k;
ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚:	http, server

Gilimitahan ang pinakataas nga gidak-on sa usa ka header sa hangyo nga gi-compress gamit ang HPACK. Ang pagpugong magamit parehas sa ngalan ug sa kantidad. Kung gigamit ang pag-encode sa Huffman, mahimong mas dako ang aktuwal nga gidak-on sa wala giputos nga ngalan ug mga kuwerdas sa kantidad. Ang default nga limitasyon angay alang sa kadaghanan nga mga pangutana.

Sa kinatibuk-an, mao kini. Ug nganong tanan? Tungod kay taas ang gitas-on sa link - mas taas kaysa sa parehas nga 4k.

Pinaagi sa pagbutang niini sa, pananglitan, 8kb (o kutob sa mahimo nga igo), atong masulbad ang problema.
Mao nga kini moadto.

Source: www.habr.com

Idugang sa usa ka comment