Π‘ΡΠ°ΡΠΈΡ ΠΎΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° βΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π±Π΅Π»Π΅ΠΆΠΊΠΈβ.
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