[Nginx] Carane ngalahake response_status = 0

Artikel saka kategori "sidenotes".

TL: DR:

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

Ing salah sawijining proyek, sawise ngganti sawetara logika internal saka backend, aku wiwit mirsani respon_code aneh ing log, yaiku 0. Ing log katon kaya iki:

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


Maca dokumentasi lan googling babagan topik iki ora ngasilake apa-apa - amarga ... Disebutake yen prilaku iki kedadeyan nalika klien nutup sambungan tanpa ngliwati header. Uga, lan macem-macem barang eksotis kanthi ukuran buffer kanggo wsgi_, sing ing kasus kita ora cocog karo tembung "kanthi cara apa wae".

UmumΓ©, kita mutusake manawa masalah kasebut ora dadi masalah, kanthi nganggep kasunyatan manawa volume kasebut ora kritis.

Persis nganti aku bingung karo masalah ing ngisor iki: ing sawetara kasus, pranala mbukak tanpa masalah liwat http, nanging babar pisan nolak kanggo bisa liwat https, prodhuksi apik banget: Sambungan #0 kanggo host conto. com kiwa utuh
curl: (52) balesan kosong saka server

Ing log, kita bisa nglacak perkara iki mung kanthi IP - ora ana panjaluk utawa data liyane, kaya sing bisa dideleng saka conto ing ndhuwur. Mung status kondhang 0, nanging aku ngerti yen aku ora ngganggu panjaluk kasebut! Aku miwiti kanggo tokoh metu apa bisa dadi salah. Lan kabeh dadi prasaja banget:

rungokake 443 ssl http2 backlog=8192;

Inggih, yen sampeyan nggunakake http2 kanggo sambungan ssl, banjur ora cukup mung kanggo ngatur panyuwunan buffers, padha uga kudu diatur ing ngx_http_v2_module, yaiku:

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

Watesan ukuran maksimal header panjalukan sing dikompres nggunakake HPACK. Watesan ditrapake kanthi padha kanggo jeneng lan nilai. Yen enkoding Huffman digunakake, ukuran nyata saka jeneng unpacked lan nilai strings bisa dadi luwih gedhe. Watesan gawan cocok kanggo akeh pitakon.

UmumΓ©, iki. Lan kenapa kabeh? Amarga dawa link kasebut dawa - luwih dawa tinimbang 4k sing padha.

Kanthi nyetel kanggo, contone, 8kb (utawa minangka akeh minangka kamungkinan cukup), kita ngatasi masalah.
Dadi dadi.

Source: www.habr.com

Add a comment