[Nginx] Hur övervinner man response_status = 0

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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster