Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°ΠΌΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠΌ Π°ΡΠΏΠ΅ΠΊΡΠΎΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΈ Apache HTTP Server Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡΡΡ ΠΎ"ΡΠ°ΡΠ°Ρ " Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Apache, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ°ΠΉΠΌΠ°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π΄ΠΎ ΡΠ°Π·ΡΡΠ²Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠ° ΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π°ΠΏΡΡΠΌΡΡ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΡΡΡΠ° ΠΈ Π΅Π³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΠΈΠΊΠΎΠ²ΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π±Π΅Π· Π·Π°Π²ΠΈΡΠ°Π½ΠΈΠΉ.
ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π»ΠΈΠΌΠΈΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π΄Π²ΡΠΌ ΠΊΡΠ°ΠΉΠ½ΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡΠΌ: Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ Π΄Π΅ΡΠΆΠ°ΡΡ"ΠΌΠ΅ΡΡΠ²ΡΠ΅" ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΠ°ΡΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΡΡΡΡ, Π»ΠΈΠ±ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΡΠ²Π°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅, Π½ΠΎ Π²Π°Π»ΠΈΠ΄Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Ρ ΠΏΠ»ΠΎΡ ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΠΌ. Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡΡ , Π²ΠΊΠ»ΡΡΠ°Ρ Π²Π΅ΡΠΊΡ 4.6, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠ² ΡΡΠ°Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ, ΡΡΠ΅Π±ΡΡ ΠΎΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΈΠΆΠ΅ ΠΌΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΡ ΡΠΎΠ½ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ httpd.conf ΠΈΠ»ΠΈ apache2.conf, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΡΡΠΏΠ°ΡΡ Π² ΡΠΈΠ»Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ»ΡΠΆΠ±Ρ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² Π±ΠΎΠ΅Π²ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΠ°Π·ΠΎΠ²Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠ² ΡΠ°ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΠΏΡΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ 504 Gateway Timeout ΠΈΠ»ΠΈ 408 Request Timeout.
Π¦Π΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Timeout, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ
ΡΠ΅ΡΠ²Π΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
ΠΊΠ»ΠΈΠ΅Π½ΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Apache ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π° 300 ΡΠ΅ΠΊΡΠ½Π΄, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ°ΠΉΡΠΎΠ², Π½ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΆΠ΅Π»ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π°Π½Π½ΡΡ
. Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠ΅Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ Π·Π°Π½ΡΡΡΠ΅ Π²ΠΎΡΠΊΠ΅ΡΡ (ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΠΈ), ΠΏΠΎΠ²ΡΡΠ°Ρ ΠΎΠ±ΡΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ»Π΅ΠΏΠΎΠ΅ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Timeout ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΠ±ΡΡΠ²Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Ρ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌ ΠΊΠ°Π½Π°Π»ΠΎΠΌ ΡΠ²ΡΠ·ΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°ΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π±Π°Π»Π°Π½Ρ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ"Π΄Π΅ΡΠΆΠ°ΡΡ" Π·Π°Π²ΠΈΡΡΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΡ, Π½ΠΎ ΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠ²Π»ΡΡΡ ΠΈΠ·Π»ΠΈΡΠ½Π΅ΠΉ Π°Π³ΡΠ΅ΡΡΠΈΠΈ ΠΊ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½ΡΠΌ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ. ΠΠ»Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ
ΡΡ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΎΡΡΠ΅ΡΠΎΠ², Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠΌΠ°ΡΡ.
- β±οΈ ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠΌΠ°ΡΡ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π²ΡΠ΅ ΡΡΠ°ΠΏΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ°, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ ΡΠ΅Π»Π° Π·Π°ΠΏΡΠΎΡΠ°.
- π Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅ ΠΎΡΠΈΡΠ°ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΏΡΠΈ DDoS-Π°ΡΠ°ΠΊΠ°Ρ ΡΠΈΠΏΠ° Slowloris.
- π οΈ ΠΠ»Ρ PHP-ΡΠΊΡΠΈΠΏΡΠΎΠ² ΡΠ°ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
max_execution_timeΠ²php.ini, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΡ Apache.
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Timeout Π² Apache 2.4 ΠΈ Π½ΠΎΠ²Π΅Π΅ (ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΈ Π³ΠΈΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠ°Ρ 4.6) ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ, ΠΎΡΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ°, Π²ΡΠ΅ΠΌΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ°ΠΌΠΈ TCP-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΠΎΡΠ²Π΅ΡΠ΅ ΠΈ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ACK-ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡΠ½Π΅Π΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΡΠΈ.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Timeout Π½ΠΈΠΆΠ΅ 10 ΡΠ΅ΠΊΡΠ½Π΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΌΠ°ΡΡΠΎΠ²ΡΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ 408 Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡΡΠΈΡ Π²ΡΡΠΎΠΊΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ (high latency).
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Apache Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ (reverse proxy) ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Tomcat, Node.js ΠΈΠ»ΠΈ Python Gunicorn), Π²ΡΡΡΠΏΠ°ΡΡ Π² ΡΠΈΠ»Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°ΠΉΠΌΠ°ΡΡΡ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ProxyTimeout ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠΌΠ°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Ρ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠΌ. ΠΡΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½"Π²Π΅ΡΠ°ΡΡ" Π²Π΅ΡΡ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ, ΠΎΠΆΠΈΠ΄Π°Ρ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ upstream-ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΡΠ»ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Ρ
Π²Π°ΡΠΈΡΡ, ΠΈ Apache ΡΠ°Π·ΠΎΡΠ²Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π±ΡΠΊΠ΅Π½Π΄ Π² ΠΈΡΠΎΠ³Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡ Π·Π°Π΄Π°ΡΡ. Π ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΠ±ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ProxyTimeout Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ
location-Π±Π»ΠΎΠΊΠΎΠ². Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ProxyPass, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠΌΠ°ΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΠΏΡΡΠ΅ΠΉ.
- π ProxyTimeout ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Apache ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΠΊΡΠΈ.
- βοΈ ΠΠ»Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ°ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ°ΠΉΠΌΠ°ΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
- π ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
connectiontimeoutΠ² ΡΡΡΠΎΠΊΠ΅ ProxyPass ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ProxyTimeout Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ location
ProxyPass http://backend:8080/
ProxyTimeout 300
Π§Π°ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ³Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
. ΠΡΠ»ΠΈ Π±ΡΠΊΠ΅Π½Π΄-ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π½ΠΎ Π΄ΠΎΠ»Π³ΠΎ Π½Π΅ ΠΎΡΠ΄Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅, ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ProxyTimeout. Π Π»ΠΎΠ³Π°Ρ
ΡΡΠΎ ΡΠ°ΡΡΠΎ ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°"Timeout waiting for input from remote server". ΠΠ»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ°ΠΊΠΈΡ
ΡΠΈΡΡΠ°ΡΠΈΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ²Π½Ρ debug Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ mod_proxy.
ΠΠ°ΠΊ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ Π±ΡΠΊΠ΅Π½Π΄?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ curl Ρ ΡΠ»Π°Π³ΠΎΠΌ -w Π΄Π»Ρ Π·Π°ΠΌΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΠ²Π΅ΡΠ°: curl -w"@curl-format.txt" -o /dev/null -s"http://Π²Π°Ρ-ΡΠ°ΠΉΡ/api". Π€ΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° curl-format.txt: time_namelookup: %{time_namelookup}\n time_connect: %{time_connect}\n time_appconnect: %{time_appconnect}\n time_pretransfer: %{time_pretransfer}\n time_redirect: %{time_redirect}\n time_starttransfer: %{time_starttransfer}\n ----------\n time_total: %{time_total}\n
ΠΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ KeepAlive ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΡΡΠ°Π½ΠΈΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, ΡΡΠΈΠ»ΠΈ, ΡΠΊΡΠΈΠΏΡΡ). ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ"ΡΠ°ΡΡ": KeepAliveTimeout ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° ΡΠΆΠ΅ ΠΎΡΠΊΡΡΡΠΎΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ. Π Apache 2.4+ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ.
Π‘Π»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ KeepAliveTimeout ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π²ΠΎΡΠΊΠ΅ΡΡ Apache ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡ, ΠΎΠΆΠΈΠ΄Π°Ρ Π½ΠΎΠ²ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΆΠ΅ ΡΡΠ»ΠΈ ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΡΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π²Π΅Π΄ΡΡΠ°Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅"MaxRequestWorkers reached", ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ΅ ΡΠ»ΠΎΡΡ Π·Π°Π½ΡΡΡ"ΡΠΏΡΡΠΈΠΌΠΈ" ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 2-5 ΡΠ΅ΠΊΡΠ½Π΄.
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | ΠΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ |
|---|---|---|
| KeepAlive | On | Π‘Π½ΠΈΠΆΠ°Π΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° CPU Π·Π° ΡΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΠΉ TCP. |
| KeepAliveTimeout | 2-5 ΡΠ΅ΠΊ | ΠΡΡΠΎΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡ ΠΎΠ΄ΡΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΈ ΡΠ»ΠΎΡΡ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ². |
| MaxKeepAliveRequests | 100-200 | ΠΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ»-Π²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. |
βοΈ ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ KeepAlive
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΌ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π° ΡΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠΈ ΡΡΠ°ΡΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΡΠ²ΡΠ·ΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΡΠ΅Ρ KeepAlive. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ HTTP/2 (ΠΏΡΠΎΡΠΎΠΊΠΎΠ» h2), ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ KeepAlive ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΈ ΡΠ°ΠΉΠΌΠ°ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½Π°ΡΠ΅, ΡΠΏΡΠ°Π²Π»ΡΡΡΡ ΡΡΠ΅ΠΉΠΌΠ°ΠΌΠΈ Ping.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ HTTP/2 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ KeepAliveTimeout ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·Ρ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, Π½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΌΠΈ ΠΎΡΡΠ°Π΅ΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ.
ΠΠ»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ (PHP, Python, Perl), ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠΌΠ°ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΡΠ°ΠΉΠΌΠ°ΡΡΠ°ΠΌΠΈ Apache. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² PHP Π΅ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° max_execution_time, Π° Π² Python (Gunicorn/uWSGI) β ΡΠ²ΠΎΠΈ Π»ΠΈΠΌΠΈΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π²ΠΎΡΠΊΠ΅ΡΠ°. ΠΡΠ»ΠΈ ΡΠΊΡΠΈΠΏΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΡΠ²Π°Π½, Π½ΠΎ Apache ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΆΠ΄Π°ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π΅ΡΠ»ΠΈ Π½Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ.
Π§Π°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ°ΡΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ: Apache ΠΆΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ CGI/FPM, Π° ΡΠΎΡ ΡΠΆΠ΅ ΡΠΏΠ°Π» ΠΏΠΎ ΡΠ°ΠΉΠΌΠ°ΡΡΡ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ PHP-FPM ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ request_terminate_timeout Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ Ρ ProxyTimeout ΠΈΠ»ΠΈ FCGITimeout Π² Apache. ΠΠ΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ ΡΡΠΈΡ
"ΡΠ°ΡΠΎΠ²" ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π² Π»ΠΎΠ³Π°Ρ
ΠΎΡΠΈΠ±ΠΎΠΊ 502 Bad Gateway ΠΈΠ»ΠΈ 504 Gateway Timeout.
- π PHP-FPM ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°.
- β³ ΠΠ»ΠΈΠ½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠ½Π΅ΡΠ΅Π½Π° Π² ΡΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ (ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ), Π° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² HTTP-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅.
- π ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ FastCGI ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ
-idle-timeoutΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΡΠΎΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ FCGITimeout Π΄Π»Ρ PHP
SetHandler"proxy:fcgi://127.0.0.1:9000"
FCGITimeout 300
ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠ² Π½Π° ΡΡΠΎΠ²Π½Π΅ Apache Π½Π΅ ΡΠ΅ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, ΠΏΡΠΎΡΡΠΎ"Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ" Π»ΠΈΡΡ ΠΎΡΠΎΠ΄Π²ΠΈΠ½Π΅Ρ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π½ΠΎ Π½Π΅ ΡΠ»ΡΡΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΎΠΏΡΡ. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅, ΡΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠ².
ΠΠΎΡΠ»Π΅ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ apachectl configtest ΠΈΠ»ΠΈ apache2ctl configtest. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ Π·Π°ΠΏΡΡΡΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠΈ Π² ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ. Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ reload ΠΈΠ»ΠΈ restart.
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ β ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ°ΠΏ. Π‘Π»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΡΠ°ΠΉΠ»Π°ΠΌΠΈ error_log Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΡΠ°ΡΡΠΈ, ΠΏΠΎΠΊΠ° Π²Ρ Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π±Π°Π»Π°Π½Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΡΠΎΠ΄Π΅ mod_status Π΄Π»Ρ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π·Π° ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ°ΠΊ ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°ΠΉΠΌΠ°ΡΡΡ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ?
Π§ΡΠΎΠ±Ρ Π²Π΅ΡΠ½ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊ Π·Π°Π²ΠΎΠ΄ΡΠΊΠΈΠΌ, ΡΠ΄Π°Π»ΠΈΡΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ (Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ» # Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΠΊΠΈ) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. Apache Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π²Π΅ΡΡΠΈΠΉ ΡΡΠΎ 300 ΡΠ΅ΠΊΡΠ½Π΄ Π΄Π»Ρ Timeout ΠΈ 5 ΡΠ΅ΠΊΡΠ½Π΄ Π΄Π»Ρ KeepAliveTimeout.
ΠΠ»ΠΈΡΠ΅Ρ Π»ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠ² Π½Π° SSL/TLS ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΠ΅?
ΠΠ°, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Timeout ΡΠ°ΠΊΠΆΠ΅ ΠΎΡ
Π²Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ, ΠΎΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π½Π° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ SSL-ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΡ. ΠΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈΡΠΏΡΡΡΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ HTTPS ΠΈΠ·-Π·Π° ΡΠ΅ΡΠ΅Π²ΡΡ
Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Ρ
ΠΎΡΡ ΡΠ°ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΡΠΎΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ SSL-ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π·Π°Π΄Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ°ΠΉΠΌΠ°ΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Ρ ΠΎΡΡΠΎΠ²?
ΠΠ°, Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠΎΠ² <VirtualHost>. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΠΈΠ΅ Π»ΠΈΠΌΠΈΡΡ Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
ΡΠ°ΠΉΡΠΎΠ² ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΡΠ³ΠΊΠΈΠ΅ β Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΡ
ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ API, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ.