[Nginx] Jinsi ya kushinda majibu_status = 0

Nakala kutoka kwa kitengo cha "maelezo ya kando".

TL: DR:

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

Kwenye moja ya miradi, baada ya kubadilisha mantiki ya ndani ya backend, nilianza kuona majibu_code ya kushangaza kwenye magogo, ambayo ni 0. Katika magogo inaonekana kitu kama hiki:

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


Kusoma hati na kuvinjari mada hii hakukuzaa chochote - kwa sababu ... Inaelezwa kuwa tabia hii hutokea wakati mteja alifunga uunganisho bila kupitisha vichwa vya habari. Kweli, na vitu vingi vya kigeni vilivyo na saizi ya bafa ya wsgi_, ambayo kwa upande wetu haikufaa neno "kwa njia yoyote".

Kwa ujumla, tuliamua kuwa shida sio shida, kwa kuzingatia ukweli kwamba kwa viwango vyetu sio muhimu kabisa.

Hasa hadi nilistaajabishwa na shida ifuatayo: katika hali zingine, viungo hufunguliwa bila shida kupitia http, lakini hukataa kabisa kufanya kazi kupitia https, ikitoa ajabu: Unganisho #0 kwa mwenyeji example.com imesalia.
curl: (52) Jibu tupu kutoka kwa seva

Katika kumbukumbu, tuliweza kufuatilia jambo hili tu na IP - hakukuwa na ombi au data nyingine yoyote, kama inavyoweza kuonekana kutoka kwa mfano hapo juu. Hali mbaya tu ni 0, lakini najua kuwa sikuingilia ombi! Nilianza kufikiria nini kinaweza kwenda vibaya. Na kila kitu kiligeuka kuwa rahisi sana:

sikiliza 443 ssl http2 backlog=8192;

Kweli, ikiwa unatumia http2 kwa miunganisho ya ssl, basi haitoshi tu kusanidi bafa za ombi, lazima pia zisanidiwe katika ngx_http_v2_module, ambayo ni:

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

Hupunguza ukubwa wa juu zaidi wa kichwa cha ombi kilichobanwa kwa kutumia HPACK. Kizuizi kinatumika kwa usawa kwa jina na thamani. Ikiwa usimbaji wa Huffman utatumiwa, saizi halisi ya mifuatano ya jina na thamani ambayo haijapakiwa inaweza kuwa kubwa zaidi. Kikomo chaguo-msingi kinafaa kwa hoja nyingi.

Kwa ujumla, hii ndio. Na kwa nini wote? Kwa sababu urefu wa kiunga ulikuwa mrefu - mrefu kuliko hizo 4k.

Kwa kuiweka, kwa mfano, 8kb (au kadri inavyowezekana kuwa ya kutosha), tunatatua tatizo.
Hivyo huenda.

Chanzo: mapenzi.com

Kuongeza maoni