[Nginx] Kuidas vÔita response_status = 0

Artikkel, mis kuulub kategooriasse „mĂ€rkmed ÀÀrele”.

TL:DR:

http2_max_field_size 8k; # kÔik pÀÀstab!

Ühes projektis, pĂ€rast teatud sisejuhtimise muutmist, hakkasin logides jĂ€lgima kummalist response_code’i, nimelt — 0. Logides tundub see umbes jĂ€rgmine:

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


Dokumendi lugemine ja selle teemaga google'itamine ei andnud mingit tulemust — kuna vĂ€idetakse, et selline kĂ€itumine tekib siis, kui klient sulgeb ĂŒhenduse, edastamata pealkirju. Ja igasugune eksootika wsgi_ vahemĂ€lu suuruste osas, mis meie puhul ei sobinud absoluutselt.

KokkuvÔttes otsustasime, et probleem ei ole probleem, arvestades, et meie mahtude puhul ei ole see absoluutselt kriitiline.

Just sel hetkel, kui mind jÀrgnev probleem mÔtlema pani: mÔnel juhul avanevad lingid probleemideta http kaudu, kuid keeldusid tÀielikult töötamast https kaudu, pakkudes imelist: Connection #0 to host example.com left intact
curl: (52) TĂŒhi vastus serverilt

Logides Ă”nnestus seda asja jĂ€lgida ainult IP kaudu — ei ole midagi muud, nagu nĂ€ha ĂŒlaltoodud nĂ€itest — pole. Ainult see kurikuulus staatus 0, aga ma ju tean, et ma ei katkestanud pĂ€ringut! Hakkasin uurima, mis vĂ”ib valesti minna. Ja kĂ”ik osutus vĂ€ga lihtsaks:

listen 443 ssl http2 backlog=8192;

Nii et kui kasutada http2 SSL-ĂŒhenduste jaoks, siis ei piisa lihtsalt pĂ€ringute vahemĂ€lu seadistamisest, neid tuleb seadistada ka ngx_http_v2_module'is, nimelt:

SĂŒntaks:	http2_max_field_size suurus;
Vaikeseade:	http2_max_field_size 4k;
Kontekst:	http, server

Piirab maksimaalset pÀise suurust, mida on tihendatud HPACK-iga. Piirang kehtib vÔrdselt nii nimele kui vÀÀrtusele. Kui kasutatakse Huffmani kodeerimist, siis vÔivad tegelikud avatud stringide suurused olla suuremad. VaikesÀtete piirang sobib enamikuks pÀringuteks.

KokkuvĂ”ttes, see on see. Aga miks? Kuna lingi pikkus oli suur — rohkem kui need 4k.

Seades selle nĂ€iteks 8kb (vĂ”i nii palju, kui kindlasti piisab) — lahendame probleemi.
Nii need asjad on.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster