[Nginx] Как да побСдим response_status = 0

Бтатия ΠΎΡ‚ катСгорията β€žΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½ΠΈ Π±Π΅Π»Π΅ΠΆΠΊΠΈβ€œ.

TL: DR:

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

Π’ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅, слСд ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ… някаква Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π°, Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ… Π΄Π° наблюдавам странСн response_code Π² рСгистрационнитС Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ 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 към хост example.com остава Π½Π΅ΠΏΠΎΠΊΡŠΡ‚Π½Π°Ρ‚Π°
curl: (52) ΠŸΡ€Π°Π·Π΅Π½ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π°

Π’ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ успяхмС Π΄Π° прослСдим Ρ‚ΠΎΠ²Π° Π½Π΅Ρ‰ΠΎ само ΠΏΠΎ IP - нямашС заявка ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ сС Π²ΠΈΠΆΠ΄Π° ΠΎΡ‚ горния ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘Π°ΠΌΠΎ прословутият статус Π΅ 0, Π½ΠΎ Π·Π½Π°ΠΌ, Ρ‡Π΅ Π½Π΅ съм ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Π» заявката! Π—Π°ΠΏΠΎΡ‡Π½Π°Ρ… Π΄Π° Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠ±ΡŠΡ€ΠΊΠ°. И всичко сС ΠΎΠΊΠ°Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ просто:

ΡΠ»ΡƒΡˆΠ°ΠΉΡ‚Π΅ 443 SSL http2 изоставанС=8192;

Π•, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ http2 Π·Π° ssl Π²Ρ€ΡŠΠ·ΠΊΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ само Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π±ΡƒΡ„Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° заявкитС, Ρ‚Π΅ ΡΡŠΡ‰ΠΎ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ Π² ngx_http_v2_module, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

Бинтаксис:	http2_max_field_size Ρ€Π°Π·ΠΌΠ΅Ρ€;
Π£ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅:	http2_max_field_size 4k;
ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚:	http, server

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π° максималния Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π° Π½Π° заявка, компрСсирана с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° HPACK. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π²Π°ΠΆΠΈ Π΅Π΄Π½Π°ΠΊΠ²ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° ΠΈΠΌΠ΅Ρ‚ΠΎ, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° стойността. Ако сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Huffman, дСйствитСлният Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Ρ€Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈΡ‚Π΅ Π½ΠΈΠ·ΠΎΠ²Π΅ Π·Π° ΠΈΠΌΠ΅ ΠΈ стойност ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΠΎ-голям. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ подходящо Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ заявки.

Π’ ΠΎΠ±Ρ‰ΠΈ Π»ΠΈΠ½ΠΈΠΈ Ρ‚ΠΎΠ²Π° Π΅. И Π·Π°Ρ‰ΠΎ всички? Π—Π°Ρ‰ΠΎΡ‚ΠΎ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° бСшС дълга - ΠΏΠΎ-голяма ΠΎΡ‚ ΡΡŠΡ‰ΠΈΡ‚Π΅ Ρ‚Π΅Π·ΠΈ 4k.

ΠšΠ°Ρ‚ΠΎ Π³ΠΎ настроим Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° 8kb (ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΅ възмоТно Π΄Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ), Ρ€Π΅ΡˆΠ°Π²Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.
Π’Π°ΠΊΠΈΠ²Π° случаи.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€