Artikel av typen "anteckningar pÄ marginalen."
TL:DR:
http2_max_field_size 8k; # rĂ€ddar alla!PĂ„ ett av projekten, efter att ha Ă€ndrat en del intern logik i backend, började jag se en konstig response_code i loggarna, nĂ€mligen â 0. I loggarna ser det ungefĂ€r ut sĂ„ hĂ€r:
{
"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": ""
}
Att lĂ€sa dokumentationen och googla om Ă€mnet gav mig ingenting â eftersom det pĂ„stĂ„s att sĂ„dant beteende uppstĂ„r nĂ€r klienten har stĂ€ngt anslutningen utan att skicka nĂ„gra rubriker. Och att det finns olika exotiska saker med bufferstorlekar för wsgi_, vilket i vĂ„rt fall var helt olĂ€mpligt.
I det stora hela beslutade vi att problemet â inte Ă€r ett problem, med tanke pĂ„ att vid vĂ„ra volymer Ă€r det helt ovidkommande.
Precis tills jag blev utmanad med nÀsta problem: i vissa fall öppnas lÀnkar utan problem över http, men vÀgrar helt att fungera över https, vilket ger ett underbart: Connection #0 to host example.com left intact
curl: (52) Tomt svar frÄn servern
I loggarna kunde man bara spĂ„ra detta genom IP â varken begĂ€ran eller nĂ„gon annan information, som man kan se i exemplet ovan â finns. Endast den vansinniga statusen 0, men jag vet ju att jag inte avbröt begĂ€ran! Jag började grĂ€va i vad som kunde gĂ„ fel. Och allt visade sig vara vĂ€ldigt enkelt:
listen 443 ssl http2 backlog=8192;
SÄ, om man anvÀnder http2 för ssl-anslutningar, rÀcker det inte bara att konfigurera begÀrans buffertar, man mÄste ocksÄ konfigurera dem i ngx_http_v2_module, nÀmligen:
Syntax: http2_max_field_size storlek;
Standard: http2_max_field_size 4k;
Kontext: http, server
BegrÀnsar den maximala storleken pÄ en begÀrans rubrik, komprimerad med HPACK. BegrÀnsningen gÀller lika bÄde namn och vÀrde. Om Huffman-kodning anvÀnds kan den faktiska storleken pÄ de uppackade strÀngerna för namn och vÀrde vara större. StandardbegrÀnsningen passar de flesta begÀrningar.
Ăverlag, sĂ„ Ă€r det. Och varför? För att lĂ€ngden pĂ„ lĂ€nken var stor â större Ă€n just de 4 k.
Genom att stĂ€lla in det pĂ„, till exempel, 8kb (eller sĂ„ mycket som sĂ€kert behövs) â löser vi problemet.
SÄdana Àr förhÄllandena.
KĂ€lla: habr.com
