"sidenotes" جي درجي مان هڪ مضمون.
TL: ڊبليو:
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 ذريعي ڪم ڪرڻ کان انڪار ڪري ٿو، شاندار پيدا ڪري ٿو: Connection #0 to host example.com برقرار رهي
curl: (52) سرور کان خالي جواب
لاگن ۾، اسان هن شيء کي صرف IP ذريعي ٽريڪ ڪرڻ جي قابل هئا - ڪابه درخواست يا ٻيو ڪو ڊيٽا نه هو، جيئن مٿي ڏنل مثال مان ڏسي سگهجي ٿو. صرف بدنام حيثيت 0 آهي، پر مون کي خبر آهي ته مون درخواست ۾ مداخلت نه ڪئي! مون اهو سمجهڻ شروع ڪيو ته ڇا غلط ٿي سگهي ٿو. ۽ سڀڪنھن شيء کي تمام سادو ٿي ويو:
ٻڌي اي ايم اين ايس ايس ايس http2 پٺاڻ = 8192؛
خير، جيڪڏهن توهان ssl ڪنيڪشن لاءِ http2 استعمال ڪريو ٿا، پوءِ اهو ڪافي ناهي ته صرف درخواست بفرن کي ترتيب ڏيڻ لاءِ، انهن کي پڻ ngx_http_v2_module ۾ ترتيب ڏيڻ گهرجي، يعني:
Синтаксис: http2_max_field_size размер;
Умолчание: http2_max_field_size 4k;
Контекст: http, server
HPACK استعمال ڪندي compressed درخواست هيڊر جي وڌ ۾ وڌ سائيز کي محدود ڪري ٿو. پابندي برابر لاڳو ٿئي ٿي نالي ۽ قدر ٻنهي تي. جيڪڏهن Huffman انڪوڊنگ استعمال ڪيو ويندو آهي، اڻ ڄاتل نالو ۽ قدر واري تار جي حقيقي سائيز وڏي ٿي سگهي ٿي. ڊفالٽ حد اڪثر سوالن لاء مناسب آهي.
عام طور تي، اهو ئي آهي. ۽ سڀ ڇو؟ ڇاڪاڻ ته لنڪ جي ڊيگهه ڊگهي هئي - انهن ساڳين 4k کان وڌيڪ.
ان کي ترتيب ڏيڻ سان، مثال طور، 8kb (يا جيترو ممڪن آهي)، اسان مسئلو حل ڪريون ٿا.
سو وڃي ٿو.
جو ذريعو: www.habr.com