Artikuj nga seria "shënime në margjinat".
TL:DR:
http2_max_field_size 8k; # do t'ju shpĂ«tojĂ«!NĂ« njĂ« nga projektet, pas ndryshimit tĂ« logjikĂ«s sĂ« brendshme tĂ« backend-it, fillova tĂ« vĂ« re njĂ« kod pĂ«rgjigje tĂ« çuditshĂ«m nĂ« logje, konkretisht â 0. NĂ« logje duket pak a shumĂ« kĂ«shtu:
{
"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": ""
}
Leximi i dokumentacionit dhe kĂ«rkimi nĂ« Google pĂ«r kĂ«tĂ« temĂ« nuk solli asgjĂ« â pasi Ă«shtĂ« thĂ«nĂ« se njĂ« sjellje e tillĂ« ndodh kur klienti mbyll lidhjen pa dĂ«rguar kokat. Dhe ka edhe eksotika tĂ« ndryshme me madhĂ«sinĂ« e buffer-it pĂ«r wsgi_, qĂ« nĂ« rastin tonĂ« nuk ishte aspak e pĂ«rshtatshme.
NĂ« pĂ«rgjithĂ«si, vendosĂ«m se problemi â nuk Ă«shtĂ« problem, duke pasur parasysh qĂ« pĂ«r volumin tonĂ«, nuk ishte aspak kritik.
Saktësisht deri në momentin kur më shqetësoi një problem tjetër: në disa raste lidhjet hapen pa probleme për http, por refuzojnë të punojnë për https, duke dhënë një mesazh të mrekullueshëm: Connection #0 to host example.com left intact
curl: (52) Përgjigje e zbrazët nga serveri
NĂ« logje, ndjekja e kĂ«saj gjĂ«je arriti vetĂ«m pĂ«rmes IP-sĂ« â asnjĂ« kĂ«rkesĂ«, asnjĂ« tĂ« dhĂ«nĂ« tjetĂ«r, siç duket nga shembulli mĂ« sipĂ«r â nuk ka. VetĂ«m statusi i njohur 0, por unĂ« e di qĂ« kĂ«rkesĂ«n nuk e ndĂ«rpreva! Fillova tĂ« kontrolloj se çfarĂ« mund tĂ« ketĂ« shkuar keq. Doli shumĂ« e thjeshtĂ«:
listen 443 ssl http2 backlog=8192;
Pra, nëse përdorni http2 për lidhjet ssl, nuk mjafton vetëm të konfigurosh bufferat e kërkesës, duhet t'i konfigurosh edhe në ngx_http_v2_module, konkretisht:
Sintaksa: http2_max_field_size madhësia;
Default: http2_max_field_size 4k;
Konteksti: http, server
Kufizon madhësinë maksimale të kokës së kërkesës, të kompresuar me HPACK. Kufizimi zbatohet në mënyrë të barabartë për emrin dhe vlerën. Nëse përdoret kodimi i Huffman, madhësia faktike e vargjeve të zbuluara të emrit dhe vlerës mund të jetë më e madhe. Kufizimi i paracaktuar është i përshtatshëm për shumicën e kërkesave.
NĂ« pĂ«rgjithĂ«si, kjo ishte arsyeja. Pse? Sepse gjatĂ«si e lidhjes ishte e madhe â mĂ« shumĂ« se 4k.
Duke e vendosur atĂ« nĂ«, pĂ«r shembull, 8kb (ose aq sa tĂ« mjaftojĂ«) â e zgjidhim problemin.
Këto janë gjërat.
Burimi: habr.com
