БпСстСтС 15% ΠΎΡ‚ всички хостинг услуги

ВСствай умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠžΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
Заглавия
Администрация Π—Π°Ρ‰ΠΈΡ‚Π°

Как Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° 429 Too Many Requests

Π“Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° 429 Too Many Requests Π΅ HTTP статус ΠΊΠΎΠ΄, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ Π² RFC 6585, ΠΊΠΎΠΉΡ‚ΠΎ сигнализира, Ρ‡Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΅ надвишил ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° Π±Ρ€ΠΎΠΉ заявки, Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ прокси. Π‘ΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ ΠΎΡ‚ΠΊΠ°Π·Π²Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ заявки, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†ΡŠΡ‚ Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π΅ сС Π½ΡƒΠ»ΠΈΡ€Π°, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π²Ρ€ΡŠΡ‰Π° Π·Π°Π³Π»Π°Π²ΠΊΠ° Retry-After, ΡƒΠΊΠ°Π·Π²Π°Ρ‰Π° ΠΊΠΎΠ»ΠΊΠΎ дълго трябва Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚.

Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Π³Ρ€Π΅ΡˆΠΊΠ° 503 Service Unavailable, която отразява нСизправност Π² ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚Π° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, 429 Π΅ ΡƒΠΌΠΈΡˆΠ»Π΅Π½ ΠΎΡ‚ΠΊΠ°Π·, основан Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ Ρ€Π°Π·Π»ΠΈΠΊΠ° Π΅ ΠΎΡ‚ Ρ€Π΅ΡˆΠ°Π²Π°Ρ‰ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° инфраструктурата β€” Ρ‚ΠΎ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° *ΠΊΠΎΠΉ* ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Ρ‚Π²ΡŠΡ€Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ заявки, *Π·Π°Ρ‰ΠΎ*, ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° правилния слой ΠΎΡ‚ стСка.

Какво Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ причинява Π³Ρ€Π΅ΡˆΠΊΠ° 429

Π“Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° сС появява Π½Π° мноТСство слоСвС ΠΈ смСсванСто ΠΈΠΌ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½Π° Π΄ΠΈΠ°Π³Π½ΠΎΠ·Π°. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΏΠΎΠΏΠ°Π΄Π° Π² Π΅Π΄Π½Π° ΠΎΡ‚ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° заявкитС ΠΎΡ‚ страна Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° β€” Π£Π΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΠΈ (Apache, Nginx), ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΈ прокси (HAProxy, Varnish) ΠΈΠ»ΠΈ CDN ΠΊΡ€Π°ΠΉΠ½ΠΈ възли (Cloudflare, Fastly) Π½Π°Π»Π°Π³Π°Ρ‚ ΠΏΡ€Π°Π³ΠΎΠ²Π΅ Π·Π° заявки Π½Π° IP ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½.
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€” WordPress плъгини, пСрсонализиран middleware ΠΈΠ»ΠΈ API шлюзовС Π½Π°Π»Π°Π³Π°Ρ‚ собствСни ограничСния, нСзависимо ΠΎΡ‚ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€Π°.
  • Π˜Π·Ρ‡Π΅Ρ€ΠΏΠ²Π°Π½Π΅ Π½Π° ΠΊΠ²ΠΎΡ‚Π°Ρ‚Π° Π½Π° API Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни β€” Π’Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° външСн API (Google Maps, Stripe, OpenAI) ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΊΠ²ΠΎΡ‚Π°Ρ‚Π° Π½Π° доставчика позволява, ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° 429 сС ΠΏΡ€Π΅Π΄Π°Π²Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π΄ΠΎ крайния ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π».
  • Π—Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ β€” ΠžΠΏΠΈΡ‚ΠΈ Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ с Π³Ρ€ΡƒΠ±Π° сила, агрСсивни ΡΠΊΡ€Π΅ΠΉΠΏΡŠΡ€ΠΈ, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ скриптовС Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈΠ»ΠΈ лошо написани ΠΊΡ€ΠΎΡƒΠ»ΡŠΡ€ΠΈ ΠΈΠ·Ρ‡Π΅Ρ€ΠΏΠ²Π°Ρ‚ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ΠΈΡ‚Π΅ Π·Π° заявки.

ЧСсто пропускан ΠΊΡ€Π°Π΅Π½ случай: срСди Π·Π° сподСлСн хостинг, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ скок Π² Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° съсСдСн Π½Π°Π΅ΠΌΠ°Ρ‚Π΅Π» ΠΈΠ·Ρ‡Π΅Ρ€ΠΏΠ²Π° сподСлСнитС ΠΏΡƒΠ»ΠΎΠ²Π΅ ΠΎΡ‚ Π²Ρ€ΡŠΠ·ΠΊΠΈ, ΠΊΠ°Ρ€Π°ΠΉΠΊΠΈ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ 429 ΠΎΡ‚ upstream Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π²Π°ΡˆΠΈΡΡ‚ собствСн ΠΊΠΎΠ΄ сС Π΄ΡŠΡ€ΠΆΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ. Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΠ»Π°Π½ Π·Π° Π‘ΠΏΠΎΠ΄Π΅Π»Π΅Π½ Π£Π΅Π± Π₯остинг ΠΈ Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΈ ΠΈΠ·Π±Π»ΠΈΡ†ΠΈ Π½Π° 429 Π±Π΅Π· ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π΅Π½ скок Π² собствСния Π²ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡŠΡ€Π²Π°Ρ‚Π° Ρ…ΠΈΠΏΠΎΡ‚Π΅Π·Π°, която трябва Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 1: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΠ° Π½Π° ΠΏΡ€Π΅ΠΊΠΎΠΌΠ΅Ρ€Π½ΠΈΡ‚Π΅ заявки

ΠžΡ‚ΡΡ‚Ρ€Π°Π½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° 429 Π±Π΅Π· ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° нСйния ΠΏΡ€ΠΎΠΈΠ·Ρ…ΠΎΠ΄ Π΅ Π³Π°Π΄Π°Π΅Π½Π΅. Π—Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ с Π΄Π°Π½Π½ΠΈΡ‚Π΅.

Π§Π΅Ρ‚Π΅Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π½Π° Apache

grep " 429 " /var/log/apache2/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π° всСки ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ 429, Π±Ρ€ΠΎΠΈ появяванията ΠΏΠΎ IP адрСс ΠΈ Π³ΠΈ класира. IP адрСс, появяващ сС хиляди ΠΏΡŠΡ‚ΠΈ Π·Π° ΠΌΠΈΠ½ΡƒΡ‚ΠΈ, Π΅ ΠΈΠ»ΠΈ Π±ΠΎΡ‚, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ скрипт, ΠΈΠ»ΠΈ Π½Π°ΠΏΠ°Π΄Π°Ρ‚Π΅Π».

Π§Π΅Ρ‚Π΅Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π½Π° Nginx

awk '$9 == 429 {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

ΠšΠΎΡ€Π΅Π»ΠΈΡ€Π°Π½Π΅ с ΠΏΡŠΡ‚ΠΈΡ‰Π° Π½Π° заявки

grep " 429 " /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20

Ако /wp-login.php ΠΈΠ»ΠΈ /xmlrpc.php Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€Π° Π² ΠΈΠ·Ρ…ΠΎΠ΄Π°, ΠΈΠΌΠ°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π° с кампания Π·Π° Π³Ρ€ΡƒΠ±Π° сила ΠΈΠ»ΠΈ пълнСнС с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ. Ако API ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΊΠ°Ρ‚ΠΎ /api/v1/search оглавява списъка, Π²ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΡŠΡ‚ вСроятно Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ ΡΠΊΡ€Π΅ΠΉΠΏΡŠΡ€.

ИзползванС Π½Π° fail2ban Π·Π° Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ

fail2ban-client status
fail2ban-client status nginx-req-limit

Ако fail2ban Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ с ΠΊΠ°ΠΏΠ°Π½ nginx-req-limit, Ρ‚ΠΎΠΉ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠΎΠΈ IP адрСси са Π±ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ΠΈ ΠΏΠΎΡ€Π°Π΄ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ Π½Π° ограничСнията Π·Π° заявки, спСстявайки Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 2: ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° заявкитС Π½Π° Π½ΠΈΠ²ΠΎ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€

Apache: ИзползванС на mod_ratelimit и mod_evasive

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΡŠΡ‚ .htaccess, ΡˆΠΈΡ€ΠΎΠΊΠΎ разпространСн ΠΎΠ½Π»Π°ΠΉΠ½, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° mod_rewrite Π·Π° Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° 403, Π° Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π΅Π½ 429. По-сСмантично ΠΊΠΎΡ€Π΅ΠΊΡ‚Π΅Π½ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ стабилСн ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° mod_evasive Π·Π° смСкчаванС Π½Π° DoS Π°Ρ‚Π°ΠΊΠΈ.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΉΡ‚Π΅ mod_evasive Π½Π° Debian/Ubuntu:

apt install libapache2-mod-evasive
a2enmod evasive

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ към вашия Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ хост Π½Π° Apache ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° конфигурация:

<IfModule mod_evasive20.c>
    DOSHashTableSize    3097
    DOSPageCount        5
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
    DOSEmailNotify      admin@yourdomain.com
    DOSLogDir           /var/log/mod_evasive
</IfModule>

Π’ΠΎΠ²Π° Π±Π»ΠΎΠΊΠΈΡ€Π° всСки IP адрСс, ΠΊΠΎΠΉΡ‚ΠΎ достига Π΄ΠΎ Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° страница ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 5 ΠΏΡŠΡ‚ΠΈ Π² сСкунда, ΠΈΠ»ΠΈ цСлия сайт ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 50 ΠΏΡŠΡ‚ΠΈ Π² сСкунда, Π·Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π½Π° ΠΎΡ…Π»Π°ΠΆΠ΄Π°Π½Π΅ ΠΎΡ‚ 10 сСкунди.

Π—Π° ΠΏΡ€Π°Π²ΠΈΠ»Π΅Π½ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ 429 Ρ‡Ρ€Π΅Π· .htaccess Π½Π° Apache с mod_rewrite, ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ пСрсонализиран Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ°:

ErrorDocument 429 "Too Many Requests"

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} ^.*(SemrushBot|AhrefsBot|MJ12bot|DotBot).*$ [NC]
    RewriteRule .* - [R=429,L]
</IfModule>

Nginx: limit_req_zone с ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ·Π±Π»ΠΈΡ†ΠΈ

ngx_http_limit_req_module Π½Π° Nginx Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΠΉ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ инструмСнти Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° заявкитС. ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ чСсто сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, са burst ΠΈ nodelay.

Π’ /etc/nginx/nginx.conf ΠΈΠ»ΠΈ спСциалСн Ρ„Π°ΠΉΠ» Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅:

http {
    # Zone keyed by client IP, 10MB shared memory, 10 requests/second baseline
    limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
    limit_req_zone $binary_remote_addr zone=login_limit:10m rate=1r/s;

    # Return 429 instead of the default 503
    limit_req_status 429;

    server {
        location /api/ {
            limit_req zone=api_limit burst=20 nodelay;
        }

        location /wp-login.php {
            limit_req zone=login_limit burst=3 nodelay;
        }
    }
}

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ нюанс: Π‘Π΅Π· limit_req_status 429, Nginx ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π²Ρ€ΡŠΡ‰Π° 503 Π·Π° заявки с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π±Ρ€ΠΎΠΉ. Π—Π°Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ Π½Π° 429 Π΅ сСмантично ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈ позволява Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ Retry-After.

nodelay срСщу Π±Π΅Π· Ρ„Π»Π°Π³:

  • Π‘Π΅Π· nodelay: ΠΈΠ·Π»ΠΈΡˆΠ½ΠΈΡ‚Π΅ заявки сС поставят Π½Π° опашка ΠΈ сС обслуТват с Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ закъснСниС, ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°ΠΉΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ.
  • Π‘ nodelay: ΠΈΠ·Π»ΠΈΡˆΠ½ΠΈΡ‚Π΅ заявки Π½Π°Π΄ ΠΈΠ·Π±Π»ΠΈΠΊΠ° сС ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΡΡ‚ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ с 429, освобоТдавайки рСсурси ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ nodelay Π·Π° ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈ API.

ДобавянС Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ° Retry-After

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅, спазващи RFC 6585, Ρ‰Π΅ сС ΡΡŠΠΎΠ±Ρ€Π°Π·ΡΡ‚ със Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π° Retry-After. Π’ Nginx я Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ към ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π° Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ°:

location /api/ {
    limit_req zone=api_limit burst=20 nodelay;
    add_header Retry-After 60 always;
}

Π‘Ρ‚ΡŠΠΏΠΊΠ° 3: ДиагностицирайтС ΠΈ отстранСтС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ с WordPress плъгини

WordPress Π΅ чСсто срСщан ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° самопричинСни Π³Ρ€Π΅ΡˆΠΊΠΈ 429. Плъгини, ΠΊΠΎΠΈΡ‚ΠΎ Π°Π½ΠΊΠ΅Ρ‚ΠΈΡ€Π°Ρ‚ външни API ΠΏΡ€ΠΈ всяко Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° страница β€” SEO инструмСнти, ΠΈΠ·Π²Π»ΠΈΡ‡Π°Ρ‰ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ Π΄ΡƒΠΌΠΈ, Π°Π½Π°Π»ΠΈΡ‚ΠΈΡ‡Π½ΠΈ плъгини, ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‰ΠΈ Π΄Π°Π½Π½ΠΈ към домашния ΡΡŠΡ€Π²ΡŠΡ€, ΠΈΠ»ΠΈ WooCommerce Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, заявяващи ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΈ шлюзовС β€” ΠΌΠΎΠ³Π°Ρ‚ Π±ΡŠΡ€Π·ΠΎ Π΄Π° изчСрпят ограничСнията Π·Π° заявки.

БистСматична ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π΅:

  1. Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ всички плъгини Ρ‡Ρ€Π΅Π· Ρ‚Π°Π±Π»ΠΎΡ‚ΠΎ Π½Π° WordPress ΠΈΠ»ΠΈ, Π°ΠΊΠΎ Ρ‚Π°Π±Π»ΠΎΡ‚ΠΎ Π΅ Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ, Ρ‡Ρ€Π΅Π· WP-CLI:
wp plugin deactivate --all
  1. АктивирайтС ΠΏΠ»ΡŠΠ³ΠΈΠ½ΠΈΡ‚Π΅ Π΅Π΄ΠΈΠ½ ΠΏΠΎ Π΅Π΄ΠΈΠ½, тСствайки слСд всяко Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅:
wp plugin activate plugin-slug
  1. ΠΠ°Π±Π»ΡŽΠ΄Π°Π²Π°ΠΉΡ‚Π΅ Π»ΠΎΠ³Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ:
tail -f /var/log/nginx/access.log | grep " 429 "
  1. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ бъдС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ проблСмният плъгин, ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ настройкитС ΠΌΡƒ Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ Π½Π° Π°Π½ΠΊΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° API ΠΈΠ»ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° чСстота Π½Π° заявкитС, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π³ΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½ΠΎ.

ЧСсти Π½Π°Ρ€ΡƒΡˆΠΈΡ‚Π΅Π»ΠΈ: Jetpack (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° статистика ΠΈ синхронизация), Yoast SEO (ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ с MyYoast), WooCommerce Subscriptions ΠΈ всСки плъгин, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ вградСния wp_remote_get() Π½Π° WordPress Π² Ρ†ΠΈΠΊΡŠΠ» Π±Π΅Π· ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ с Ρ‚Ρ€Π°Π½Π·ΠΈΠ΅Π½Ρ‚ΠΈ.

ΠŸΡ€Π°Π²ΠΈΠ»Π½ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° плъгина β€” Ρ‚ΠΎ Π΅ Π΄Π° сС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° API сС ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° WordPress Ρ‚Ρ€Π°Π½Π·ΠΈΠ΅Π½Ρ‚ΠΈ:

$cached = get_transient( 'my_api_response' );
if ( false === $cached ) {
    $response = wp_remote_get( 'https://api.example.com/data' );
    set_transient( 'my_api_response', $response, HOUR_IN_SECONDS );
    $cached = $response;
}

Π‘Ρ‚ΡŠΠΏΠΊΠ° 4: Π’Π½Π΅Π΄Ρ€Π΅Ρ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° API заявкитС Π² ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ *ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚*, Π΄ΠΎΡΡ‚ΡŠΠΏΠ²Π°Ρ‰ API Π½Π° Ρ‚Ρ€Π΅Ρ‚Π° страна, Π²ΠΈΠ΅ стС ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° спазванСто Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ограничСния Π·Π° заявки. Π Π°Π·Ρ‡ΠΈΡ‚Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ улавянС Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ 429 Π΅ лошо инТСнСрство β€” Π²Π½Π΅Π΄Ρ€Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅.

Node.js с p-throttle

import pThrottle from 'p-throttle';

const throttle = pThrottle({
    limit: 10,       // max 10 calls
    interval: 1000   // per 1000ms (1 second)
});

const throttledFetch = throttle(async (url) => {
    const response = await fetch(url);
    return response.json();
});

Python с tenacity Π·Π° СкспонСнциално ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅

Π‘Π°ΠΌΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π΅ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ, Π°ΠΊΠΎ API Π½Π°Π»Π°Π³Π° ограничСния Π·Π° ΠΈΠ·Π±Π»ΠΈΡ†ΠΈ. ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ с СкспонСнциално ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ ΠΏΡ€ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ 429:

import requests
from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_exception

def is_rate_limited(exception):
    return (
        isinstance(exception, requests.HTTPError)
        and exception.response.status_code == 429
    )

@retry(
    retry=retry_if_exception(is_rate_limited),
    wait=wait_exponential(multiplier=1, min=2, max=60),
    stop=stop_after_attempt(5)
)
def call_api(url):
    response = requests.get(url)
    response.raise_for_status()
    return response.json()

Π’ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈ Π΄ΠΎ 5 ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ ΠΎΠΏΠΈΡ‚Π° с СкспонСнциално ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ (2 сСк., 4 сСк., 8 сСк., 16 сСк., 32 сСк.), ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π΄ΠΎ 60 сСкунди β€” ΠΌΠΎΠ΄Π΅Π», ΠΊΠΎΠΉΡ‚ΠΎ Π·Π°Ρ‡ΠΈΡ‚Π° инфраструктурата Π½Π° доставчика Π½Π° API, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π° ΠΏΠ»Π°Π²Π½ΠΎ.

Π‘ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π° Retry-After

Ако API Π²Ρ€ΡŠΡ‰Π° Π·Π°Π³Π»Π°Π²ΠΊΠ° Retry-After, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ я вмСсто фиксирано ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅:

def call_with_retry_after(url):
    response = requests.get(url)
    if response.status_code == 429:
        retry_after = int(response.headers.get("Retry-After", 5))
        time.sleep(retry_after)
        return call_with_retry_after(url)
    response.raise_for_status()
    return response.json()

Π‘Ρ‚ΡŠΠΏΠΊΠ° 5: Π‘Π»ΠΎΠΊΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΈ управлявайтС Π±ΠΎΡ‚ΠΎΠ²Π΅ Π½Π° мноТСство слоСвС

Π‘ΠΎΡ‚ΠΎΠ²Π΅Ρ‚Π΅ рядко сС обявяват чСстно, Π½ΠΎ оставят ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΡŠΡ†ΠΈ Π² Π½ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° потрСбитСлския Π°Π³Π΅Π½Ρ‚, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° заявки ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈΡ‚Π΅ Π² Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅.

Π‘Π»ΠΎΠΊΠΈΡ€Π°ΠΉΡ‚Π΅ извСстни лоши Π±ΠΎΡ‚ΠΎΠ²Π΅ Π² Nginx

map $http_user_agent $bad_bot {
    default         0;
    ~*SemrushBot    1;
    ~*AhrefsBot     1;
    ~*MJ12bot       1;
    ~*DotBot        1;
    ~*PetalBot      1;
    ~*serpstatbot   1;
}

server {
    if ($bad_bot) {
        return 429;
    }
}

УправлявайтС скоростта Π½Π° ΠΎΠ±Ρ…ΠΎΠΆΠ΄Π°Π½Π΅ Ρ‡Ρ€Π΅Π· robots.txt

User-agent: Googlebot
Crawl-delay: 2

User-agent: *
Crawl-delay: 10

Π˜ΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Crawl-delay Π½Π΅ сС спазва ΠΎΡ‚ всички ΠΊΡ€ΠΎΡƒΠ»ΡŠΡ€ΠΈ, Π½ΠΎ сигнализира Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΈ сС Π·Π°Ρ‡ΠΈΡ‚Π° ΠΎΡ‚ Bing, Yandex ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π΄ΠΎΠ±Ρ€Π΅ Π΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ сС Π±ΠΎΡ‚ΠΎΠ²Π΅.

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½Π° стСна Π·Π° ΡƒΠ΅Π± прилоТСния (WAF)

WAF, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π° Π½Π° CDN Ρ€ΡŠΠ±Π° (Cloudflare, AWS WAF, Sucuri), ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°Π»Π°Π³Π° ограничСния Π·Π° заявки, ΠΏΡ€Π΅Π΄ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ Π΄Π° достигнС вашия ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€, Π΄Ρ€Π°ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ намалявайки Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ. ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° заявкитС Π½Π° Cloudflare, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ Π΄Π° ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ IP адрСси, Π½Π°Π΄Π²ΠΈΡˆΠ°Π²Π°Ρ‰ΠΈ ΠΏΡ€Π°Π³, Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² конфигурацията Π½Π° вашия ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€ β€” Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ прСдимство Π·Π° сайтовС с висок Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 6: ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°ΠΉΡ‚Π΅ настройкитС Π½Π° ΠΏΠ»ΡŠΠ³ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° сигурност Π² WordPress

Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Wordfence, ΠΏΡ€Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° заявкитС чСсто са Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ консСрвативно ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚ Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π·Π° Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, особСно Π½Π° сайтовС с ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° AJAX ΠΈΠ»ΠΈ активност Π½Π° Π²Π»Π΅Π·Π»ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ.

НавигирайтС Π΄ΠΎ Wordfence > Firewall > All Firewall Options > Rate Limiting ΠΈ ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅:

  • Как трябва Π΄Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ΠΊΡ€ΠΎΡƒΠ»ΡŠΡ€ΠΈΡ‚Π΅ Π½Π° Google β€” Π·Π°Π΄Π°ΠΉΡ‚Π΅ Π½Π° β€žVerified Google crawlers are not rate limited”, Π·Π° Π΄Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ Π²ΡŠΡ€Ρ…Ρƒ SEO.
  • Ако заявкитС Π½Π° някого Π½Π°Π΄Π²ΠΈΡˆΠ°Ρ‚ β€” ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Ρ‚Π΅ ΠΏΡ€Π°Π³Π° ΠΎΡ‚ стойността ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ (Π½Π°ΠΏΡ€. ΠΎΡ‚ 240 Π½Π° 480 заявки Π² ΠΌΠΈΠ½ΡƒΡ‚Π° Π·Π° Π²Π»Π΅Π·Π»ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π½Π° сайтовС с Π±ΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅).
  • Ако ΠΏΡ€Π΅Π³Π»Π΅Π΄ΠΈΡ‚Π΅ Π½Π° страницитС ΠΎΡ‚ ΠΊΡ€ΠΎΡƒΠ»ΡŠΡ€ Π½Π°Π΄Π²ΠΈΡˆΠ°Ρ‚ β€” настройтС въз основа Π½Π° дСйствитСлнитС Π²ΠΈ изисквания Π·Π° Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ Π·Π° ΠΎΠ±Ρ…ΠΎΠΆΠ΄Π°Π½Π΅.

Π‘Π»Π΅Π΄ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·Π³Π»Π΅Π΄Π° Π½Π° Тивия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° Wordfence Π² ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° 24–48 часа, Π·Π° Π΄Π° ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈΡ‚Π΅, Ρ‡Π΅ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½ΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π²Π΅Ρ‡Π΅ Π½Π΅ сС Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 7: Π˜Π·Ρ‡ΠΈΡΡ‚Π΅Ρ‚Π΅ кСша ΠΎΡ‚ страна Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ диагностицирайтС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€

ΠšΠ΅ΡˆΠΈΡ€Π°Π½ΠΈΡΡ‚ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ 429 Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° Π΅ Ρ€ΡΠ΄ΡŠΠΊ, Π½ΠΎ възмоТСн, Π°ΠΊΠΎ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΡŠΡ‚ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π» Π·Π°Π³Π»Π°Π²ΠΊΠΈ Cache-Control: max-age (Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° конфигурация Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°). Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΈΡ‚Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ 429 Π½Π΅ трябва Π΄Π° сС ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‚.

Chrome:

Settings > Privacy and Security > Clear browsing data

Π˜Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Cached images and files ΠΈ Cookies and other site data, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ изчистСтС.

ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° curl, Π·Π° Π΄Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, спСцифично Π·Π° Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°:

curl -I -X GET https://yourdomain.com/problematic-endpoint

ΠŸΠΎΡ‚ΡŠΡ€ΡΠ΅Ρ‚Π΅ Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ Cache-Control, Retry-After ΠΈ X-RateLimit-* Π² ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π°. Π’Π΅Π·ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈ Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π°Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠΎΠΉ слой Π½Π°Π»Π°Π³Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ ΠΊΠΎΠ³Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅: ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° заявкитС ΠΏΠΎ слой

Π‘Π»ΠΎΠΉΠ˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ / ΠœΠ΅Ρ‚ΠΎΠ΄Π“Ρ€Π°Π½ΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΠΠ°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ΠΠ°ΠΉ-подходящ Π·Π°
CDN / РъбCloudflare Rate Limiting, AWS WAFНа IP, Π½Π° ΠΏΡŠΡ‚, Π½Π° заглавкаМного ниско (ΠΏΡ€Π΅Π΄ΠΈ изходния ΡΡŠΡ€Π²ΡŠΡ€)DDoS, смСкчаванС Π½Π° ΡΠΊΡ€Π΅ΠΉΠΏΡŠΡ€ΠΈ
ΠžΠ±Ρ€Π°Ρ‚Π΅Π½ проксиNginx `limit_req_zone`На IP, Π½Π° зонаНискоAPI ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ, страници Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅
Π£Π΅Π± ΡΡŠΡ€Π²ΡŠΡ€Apache `mod_evasive`На IP, Π½Π° страницаНиско-срСдноБподСлСн хостинг, наслСдСни стСковС
ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Middleware ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅, API шлюзНа ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π½Π° Ρ‚ΠΎΠΊΠ΅Π½, Π½Π° ΠΊΠ»ΡŽΡ‡Π‘Ρ€Π΅Π΄Π½ΠΎΠœΠ½ΠΎΠ³ΠΎΠ½Π°Π΅ΠΌΠ°Ρ‚Π΅Π»ΡΠΊΠΈ SaaS, REST API
CMS плъгинWordfence, iThemes SecurityНа IP, Π½Π° потрСбитСлска роляБрСдно-високоWordPress-спСцифична Π·Π°Ρ‰ΠΈΡ‚Π°
ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈ ΠΊΠΎΠ΄`tenacity`, `p-throttle`, ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ΠΠ° изходяща Π·Π°ΡΠ²ΠΊΠ°ΠžΡ‚ страна Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎΠšΠΎΠ½ΡΡƒΠΌΠΈΡ€Π°Π½Π΅ Π½Π° API Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни

Кога Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ с вашия хостинг доставчик

ЕскалирайтС Π΄ΠΎ вашия хостинг доставчик, ΠΊΠΎΠ³Π°Ρ‚ΠΎ:

  • Π“Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° 429 ΠΏΡ€ΠΎΠΈΠ·Ρ…ΠΎΠΆΠ΄Π° ΠΎΡ‚ upstream Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π΅Π½ прокси, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅.
  • ΠΠ½Π°Π»ΠΈΠ·ΡŠΡ‚ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΈΡ‚Π΅ ΠΎΠ±Π΅ΠΌΠΈ Π½Π° заявки, Π½ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°.
  • Π˜ΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ освобоТдаванС ΠΎΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° заявки ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ скок Π² Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° (пусканС Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ΠΎΠ²Π° кампания).
  • Π“Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° сС появява само Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ гСографски Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с CDN ΠΈΠ»ΠΈ anycast ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ»Π°Π½ Π·Π° VPS Π₯остинг, ΠΈΠΌΠ°Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ всички ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Nginx ΠΈ Apache, описани ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π±Π΅Π· Π΄Π° отварятС Ρ‚ΠΈΠΊΠ΅Ρ‚ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°. ΠŸΡ€ΠΈ управлявана инфраструктура ΠΊΠ°Ρ‚ΠΎ Dedicated ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, Π΅ΠΊΠΈΠΏΡŠΡ‚ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° вашия доставчик ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ с прослСдяванС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ядро ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½Π° стСна, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°Π΄Ρ…Π²ΡŠΡ€Π»ΡΡ‚ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° конфигурацията Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Ако Π²Π°ΡˆΠΈΡΡ‚ стСк Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π», VPS с cPanel прСдоставя Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ настройкитС Π½Π° ModSecurity ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° заявкитС Π½Π° Apache Ρ‡Ρ€Π΅Π· GUI, ΠΊΠΎΠ΅Ρ‚ΠΎ опростява конфигурацията Π·Π° Π΅ΠΊΠΈΠΏΠΈ Π±Π΅Π· Π·Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½Π° СкспСртиза Π² командния Ρ€Π΅Π΄.

Π—Π°Ρ‰ΠΈΡ‚Π° Π½Π° API ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ с SSL

ЧСсто ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π²Π°Π½ Ρ„Π°ΠΊΡ‚ΠΎΡ€: Π½Π΅ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ HTTP ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ са ΠΏΠΎ-уязвими към Π°Ρ‚Π°ΠΊΠΈ с ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ ΠΈ пълнСнС с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π³Ρ€Π΅ΡˆΠΊΠΈ 429, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ‚ Π³Ρ€ΡƒΠ±Π° сила. НалаганСто Π½Π° HTTPS с Π²Π°Π»ΠΈΠ΄Π΅Π½ SSL сСртификат Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΡ‚Π΅ Π·Π° удостовСряванС ΠΈ бисквиткитС Π·Π° сСсии Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΡ…Π²Π°Π½Π°Ρ‚ΠΈ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ инструмСнти, намалявайки Π΅Π΄Π½Π° катСгория Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, задСйстващ ограничСния Π·Π° заявки, ΠΏΡ€ΠΈ самия ΠΉ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ.

ВСхничСска ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: Π˜Π·Π±ΠΎΡ€ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ списък, Π·Π° Π΄Π° насочитС Π΄ΠΈΠ°Π³Π½ΠΎΠ·Π°Ρ‚Π° си към ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

  • 429 Π½Π° /wp-login.php ΠΈΠ»ΠΈ /xmlrpc.php β€” Π—Π°Ρ‚Π΅Π³Π½Π΅Ρ‚Π΅ Nginx limit_req Π·Π° Ρ‚Π΅Π·ΠΈ ΠΏΡŠΡ‚ΠΈΡ‰Π°, Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΉΡ‚Π΅ xmlrpc.php изцяло, Π°ΠΊΠΎ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° срСщу Π³Ρ€ΡƒΠ±Π° сила Π½Π° Wordfence.
  • 429 Π½Π° API ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΡ‚ вашия собствСн ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ β€” Π’Π½Π΅Π΄Ρ€Π΅Ρ‚Π΅ СкспонСнциално ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ с Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π° Retry-After; Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ с Ρ‚Ρ€Π°Π½Π·ΠΈΠ΅Π½Ρ‚ΠΈ/Redis Π·Π° намаляванС Π½Π° чСстотата Π½Π° изходящитС извиквания.
  • 429, засягащ всички ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ сподСлСн хостинг β€” ΠœΠΈΠ³Ρ€ΠΈΡ€Π°ΠΉΡ‚Π΅ към VPS Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ рСсурси ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΈ ограничСния Π·Π° заявки.
  • 429 ΠΎΡ‚ API Π½Π° Ρ‚Ρ€Π΅Ρ‚Π° страна, консумиран ΠΎΡ‚ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€” ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ чСстотата Π½Π° извикванията, Π²Π½Π΅Π΄Ρ€Π΅Ρ‚Π΅ опашка Π·Π° заявки, ΠΊΠ΅ΡˆΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ агрСсивно ΠΈ сС ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ с доставчика Π½Π° API, Π·Π° Π΄Π° ΠΎΠ±ΡΡŠΠ΄ΠΈΡ‚Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ²ΠΎΡ‚Π°Ρ‚Π°.
  • 429, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ Π±ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΊΡ€ΠΎΡƒΠ»ΡŠΡ€ β€” Π‘Π»ΠΎΠΊΠΈΡ€Π°ΠΉΡ‚Π΅ Π½Π° Π½ΠΈΠ²ΠΎ WAF ΠΈΠ»ΠΈ Nginx map ΠΏΠΎ потрСбитСлски Π°Π³Π΅Π½Ρ‚; провСрявайтС Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½ΠΈΡ‚Π΅ ΠΊΡ€ΠΎΡƒΠ»ΡŠΡ€ΠΈ (Googlebot) Ρ‡Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Ρ‚Π΅Π½ DNS ΠΏΡ€Π΅Π΄ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅.
  • 429, появяващ сС само Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°, Π½Π΅ Π² curl β€” Π˜Π·Ρ‡ΠΈΡΡ‚Π΅Ρ‚Π΅ кСша Π½Π° Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°; ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π·Π° service worker, ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‰ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π° Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ°; инспСктирайтС Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ Cache-Control Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π° 429.
  • 429 Π±Π΅Π· ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π» Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ β€” ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° upstream CDN ΠΈΠ»ΠΈ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€Π° Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ; ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»Π°Π³Π° Π½Π° инфраструктурСн слой, Π½Π΅Π²ΠΈΠ΄ΠΈΠΌ Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π§Π—Π’

Каква Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π³Ρ€Π΅ΡˆΠΊΠ° 429 ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ° 503?

429 Π΅ ΡƒΠΌΠΈΡˆΠ»Π΅Π½ ΠΎΡ‚ΠΊΠ°Π·, основан Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, ΠΈΠ·Π΄Π°Π²Π°Π½ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ надвиши ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° скорост Π½Π° заявкитС. 503 ΡƒΠΊΠ°Π·Π²Π°, Ρ‡Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° заявки ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΏΡ€Π΅Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°. Π Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° 429 Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° заявки ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°; Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° 503 Π΅ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚Π° ΠΈΠ»ΠΈ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° услугата.

Врябва Π»ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°ΠΌ ограничСнията Π·Π° заявки, ΠΊΠΎΠ³Π°Ρ‚ΠΎ видя 429?

НС. Π£Π²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ограничСнията Π΅ подходящо само ΠΊΠΎΠ³Π°Ρ‚ΠΎ лСгитимният Ρ‚Ρ€Π°Ρ„ΠΈΠΊ сС Π±Π»ΠΎΠΊΠΈΡ€Π°. Ако 429 Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ Π±ΠΎΡ‚ΠΎΠ²Π΅, ΠΎΠΏΠΈΡ‚ΠΈ Π·Π° Π³Ρ€ΡƒΠ±Π° сила ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ скрипт, ΠΏΠΎΠ²ΠΈΡˆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ влошава ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠ°Ρ‚ΠΎ позволява ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Π’ΠΈΠ½Π°Π³ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΏΡŠΡ€Π²ΠΎ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΠ°.

Какво ΠΏΡ€Π°Π²ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π° Retry-After ΠΈ трябва Π»ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° я Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌ?

Π—Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π° Retry-After ΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊΠΎΠ»ΠΊΠΎ сСкунди Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ° ΠΏΡ€Π΅Π΄ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ ΠΎΠΏΠΈΡ‚. RFC 6585 ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ ΠΉ с всСки ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ 429. Π”ΠΎΠ±Ρ€Π΅ Π΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈΡ‚Π΅ сС HTTP ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π½Π° API Ρ‰Π΅ я спазват, намалявайки Π±ΡƒΡ€ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ услоТняват ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° заявкитС.

МоТС Π»ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ° 429 Π΄Π° Π½Π°Π²Ρ€Π΅Π΄ΠΈ Π½Π° ΠΌΠΎΠ΅Ρ‚ΠΎ SEO?

Π”Π°, Π°ΠΊΠΎ Googlebot ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° послСдоватСлно ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ 429, Ρ‚ΠΎΠΉ Ρ‰Π΅ Π½Π°ΠΌΠ°Π»ΠΈ чСстотата Π½Π° ΠΎΠ±Ρ…ΠΎΠΆΠ΄Π°Π½Π΅ Π½Π° вашия сайт, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π±Π°Π²ΠΈ индСксиранСто Π½Π° Π½ΠΎΠ²ΠΎ ΠΈΠ»ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅. Wordfence ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ плъгини трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ Π΄Π° освобоТдават Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ ΠΊΡ€ΠΎΡƒΠ»ΡŠΡ€ΠΈ Π½Π° Google ΠΎΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° заявкитС. ΠΠ°Π±Π»ΡŽΠ΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° Π·Π° статистиката Π½Π° ΠΎΠ±Ρ…ΠΎΠΆΠ΄Π°Π½Π΅ Π² Google Search Console Π·Π° скоковС Π² Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°.

Как Π΄Π° прСдотвратя собствСното си ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π° задСйства Π³Ρ€Π΅ΡˆΠΊΠΈ 429 Π½Π° външни API?

Π’Π½Π΅Π΄Ρ€Π΅Ρ‚Π΅ комбинация ΠΎΡ‚ ΠΏΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ (ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Ρ‚Π΅ скоростта Π½Π° изходящитС заявки Π΄ΠΎ ΠΏΠΎΠ΄ докумСнтирания ΠΏΡ€Π°Π³ Π½Π° API), агрСсивно ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ (ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ API Π² Redis ΠΈΠ»ΠΈ Memcached с подходящи TTL) ΠΈ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ СкспонСнциално ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ (Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ Retry-After ΠΈ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°ΠΉΡ‚Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ). Никога Π½Π΅ ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ API извиквания синхронно ΠΏΡ€ΠΈ всяко Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° страница Π±Π΅Π· ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‰ слой ΠΏΡ€Π΅Π΄ тях.