[Nginx] Чӣ гуна бояд ҷавоб_status = 0-ро мағлуб кард

Мақола аз категорияи "қайдҳо дар ҳошияҳо".

ХИ: ДР:

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

Дар яке аз лоиҳаҳо, пас аз тағир додани баъзе мантиқи пуштибонии дохилӣ, ман дар гузоришҳо як рамзи ҷавоб_коди аҷибро дидам, махсусан, 0. Гузоришҳо чунин менамуданд:

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


Хондани ҳуҷҷатҳо ва гуглинги мавзӯъ комилан ҳеҷ натиҷа надод, зеро иддао шудааст, ки ин рафтор вақте рух медиҳад, ки муштарӣ пайвастро бидуни интиқоли сарлавҳаҳо қатъ мекунад. Ва инчунин баъзе чизҳои экзотикӣ дар бораи андозаи буфер барои wsgi_ мавҷуданд, ки дар ҳолати мо комилан номувофиқ буд.

Дар маҷмӯъ, мо тасмим гирифтем, ки мушкилот мушкил нест, бо назардошти он, ки дар ҳаҷми мо он тамоман муҳим набуд.

То он даме, ки ман аз мушкилоти зерин ҳайрон шудам: дар баъзе мавридҳо, истинодҳо дар http бе мушкилот кушода мешаванд, аммо аз кор бо https комилан даст кашида, олиҷаноб медиҳанд: Пайвастшавӣ №0 ба host example.com бетағйир монд.
curl: (52) Ҷавоби холӣ аз сервер

Ман танҳо тавонистам ин чизро дар гузоришҳо тавассути IP пайгирӣ кунам - ҳеҷ дархост ё ягон маълумоти дигар, тавре ки шумо аз мисоли боло мебинед. Танҳо мақоми бадном 0, аммо ман медонам, ки ман дархостро қатъ накардаам! Ман ба кофтани атроф шурӯъ кардам, то бубинам, ки чӣ хато бошад. Ин хеле содда шуд:

listen 443 ssl http2 акибмонда = 8192;

Хуб, агар шумо http2-ро барои пайвастҳои SSL истифода баред, танҳо танзим кардани буферҳои дархост кофӣ нест; шумо инчунин бояд онҳоро дар ngx_http_v2_module танзим кунед, яъне:

Синтаксис:	http2_max_field_size размер;
Умолчание:	http2_max_field_size 4k;
Контекст:	http, server

Андозаи максималии сарлавҳаи дархостро, ки бо истифода аз HPACK фишурда мешавад, маҳдуд мекунад. Ин маҳдудият ҳам ба ном ва ҳам ба арзиш баробар аст. Агар рамзгузории Ҳуффман истифода шавад, андозаи воқеии сатрҳои кушодашудаи ном ва арзиш метавонад калонтар бошад. Маҳдудияти пешфарз барои аксари дархостҳо мувофиқ аст.

Инак, тамом. Аммо барои чӣ? Азбаски дарозии пайванд дарозтар буд - аз он 4k дарозтар.

Бо гузоштани он, масалан, 8кб (ё то ҳадди имкон кофӣ), мо мушкилотро ҳал мекунем.
Чунин чизҳо.

Манбаъ: will.com

Илова Эзоҳ