[Nginx] Nola garaitu response_status = 0

"Alboko oharrak" kategoriako artikulu bat.

TL: DR:

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

Proiektuetako batean, backendaren barne logika batzuk aldatu ondoren, erantzun_kode bitxi bat ikusten hasi nintzen erregistroetan, hots, 0. Erregistroetan horrelako zerbait ikusten da:

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


Gai honi buruzko dokumentazioa irakurtzeak eta google-ak ez zuen ezer lortu, zeren... Jokabide hori bezeroak goiburuak pasatu gabe konexioa itxi zuenean gertatzen dela adierazten da. Beno, eta hainbat gauza exotiko wsgi_-ren buffer tamainarekin, gure kasuan "inola ere" hitzarekin egokitzen ez direnak.

Oro har, arazoa ez dela arazo bat erabaki dugu, gure bolumenetan ez dela batere kritikoa kontuan hartuta.

Hain zuzen ere, arazo honekin harritu ninduen arte: kasu batzuetan, estekak arazorik gabe irekitzen dira http bidez, baina erabat uko egiten du https bidez lan egiteari, zoragarria sortuz: Konexioa #0 adibide.com ostalari osorik geratu da.
kizkur: (52) Zerbitzariaren erantzun hutsa

Erregistroetan, gauza hau IP bidez bakarrik jarraitu ahal izan dugu - ez zegoen eskaerarik edo beste daturik, goiko adibidean ikus daitekeenez. Egoera ezaguna bakarrik 0 da, baina badakit ez nuela eskaera eten! Zer egin zitekeen gaizki asmatzen hasi nintzen. Eta dena oso sinplea izan zen:

entzun 443 ssl http2 atzerapena=8192;

Beno, ssl konexioetarako http2 erabiltzen baduzu, ez da nahikoa eskaera-buffer-ak konfiguratzea, ngx_http_v2_module-n ere konfiguratu behar dira, hots:

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

HPACK erabiliz konprimitutako eskaera-goiburuaren gehienezko tamaina mugatzen du. Murriztapena berdin aplikatzen da izenari zein balioari. Huffman kodeketa erabiltzen bada, paketatu gabeko izen eta balio-kateen benetako tamaina handiagoa izan daiteke. Muga lehenetsia kontsulta gehienetarako egokia da.

Oro har, hau da. Eta zergatik denak? Estekaren luzera luzea zelako, 4k horiek baino luzeagoa.

Adibidez, 8kb-ra ezarriz (edo nahikoa izango den neurrian), arazoa konpontzen dugu.
Hala doa.

Iturria: www.habr.com

Gehitu iruzkin berria