Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΈ настраиваСм свой CDN

Π‘Π΅Ρ‚ΠΈ доставки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° (CDN) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° сайтах ΠΈ Π² прилоТСниях Π² основном для ускорСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ статичСских элСмСнтов. ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ это Π·Π° счСт ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° CDN-сСрвСрах, располоТСнных Π² Ρ€Π°Π·Π½Ρ‹Ρ… гСографичСских Ρ€Π΅Π³ΠΈΠΎΠ½Π°Ρ…. Запросив Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· CDN, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΡ… с блиТайшСго сСрвСра.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Ρƒ всСх сСтСй доставки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ². ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² запрос Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ„Π°ΠΉΠ»Π°, CDN сСрвСр Π΅Π΄ΠΈΠ½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎ Π±Π΅Ρ€Π΅Ρ‚ Π΅Π³ΠΎ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСрвСра ΠΈ ΠΎΡ‚Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, вмСстС с Ρ‚Π΅ΠΌ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΡ Ρƒ сСбя Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. На всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ запросы ΠΎΡ‚Π²Π΅Ρ‚ отдаСтся ΠΈΠ· кСша. Π£ всСх CDN Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², очистки кСша, настройки срока Π΅Π³ΠΎ хранСния, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π‘Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² силу Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ трСбуСтся ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ доставки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, ΠΈ Ρ‚ΠΎΠ³Π΄Π° β€” Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π½Π°ΠΌ инструкция ΠΏΠΎ сборкС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ вСлосипСда.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΈ настраиваСм свой CDN
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Infographic vector created by pikisuperstar β€” www.freepik.com

Когда Π½ΡƒΠΆΠ΅Π½ собствСнный CDN

Рассмотрим случаи, ΠΊΠΎΠ³Π΄Π° запуск собствСнного CDN ΠΈΠΌΠ΅Π΅Ρ‚ смысл:

  • ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ, Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ расходы Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ использовании Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΈΡ… CDN Π²Ρ€ΠΎΠ΄Π΅ BunnyCDN ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ нСсколько сотСн Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² Π² мСсяц
  • Ссли Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ постоянный кСш ΠΈΠ»ΠΈ кСш Π±Π΅Π· сосСдСй ΠΏΠΎ сСрвСру ΠΈ ΠΊΠ°Π½Π°Π»Ρƒ
  • Π² Π½ΡƒΠΆΠ½ΠΎΠΌ Π²Π°ΠΌ Ρ€Π΅Π³ΠΈΠΎΠ½Π΅ Ρƒ CDN сСрвисов Π½Π΅Ρ‚ Ρ‚ΠΎΡ‡Π΅ΠΊ присутствия
  • Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ особыС настройки доставки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°
  • Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ доставку динамичСского ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, размСстив Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ сСрвСра
  • Π΅ΡΡ‚ΡŒ опасСниС, Ρ‡Ρ‚ΠΎ сторонний CDN сСрвис ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΎΠΌΠ΅Ρ€Π½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (ΠΏΡ€ΠΈΠ²Π΅Ρ‚ сСрвисам Π±Π΅Π· GDPR-compliant) ΠΈΠ»ΠΈ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ дСйствиями

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаСв цСлСсообразнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для запуска

Π§ΡƒΠ΄Π½ΠΎ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ своя автономная систСма (AS). Π‘ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ IP нСскольким сСрвСрам ΠΈ ΠΏΠΎ этой инструкции Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ сСти Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅ΠΌΡƒ. CΡ‚ΠΎΠΈΡ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ с Π±Π»ΠΎΠΊΠΎΠΌ адрСсов /24 Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠ΅Ρ‚ΡŒ доставки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. НСкоторыС сСрвСр-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ анонс для использования Π²ΠΎ всСх доступных Ρƒ Π½ΠΈΡ… Ρ€Π΅Π³ΠΈΠΎΠ½Π°Ρ….

Если ΠΆΠ΅ Π²Ρ‹ Π½Π΅ счастливый ΠΎΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»ΡŒ Π±Π»ΠΎΠΊΠ° IP адрСсов, Ρ‚ΠΎ для запуска простого CDN Π²Π°ΠΌ понадобятся:

  • Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ имя ΠΈΠ»ΠΈ субдомСн
  • ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π° сСрвСра Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅Π³ΠΈΠΎΠ½Π°Ρ…. Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ
  • geoDNS инструмСнт. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ Π΄ΠΎΠΌΠ΅Π½Ρƒ, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° блиТайший сСрвСр

РСгистрируСм Π΄ΠΎΠΌΠ΅Π½ ΠΈ Π·Π°ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ сСрвСра

Π‘ рСгистрациСй Π΄ΠΎΠΌΠ΅Π½Π° всС просто β€” рСгистрируСм Π² любой Π·ΠΎΠ½Π΅ Ρƒ любого рСгистратора. Π’Π°ΠΊΠΆΠ΅ для CDN ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ субдомСн, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ cdn.имядомСна.com. БобствСнно Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Ρ‚Π°ΠΊ ΠΈ поступим.

Π§Ρ‚ΠΎ касаСтся Π·Π°ΠΊΠ°Π·Π° сСрвСров β€” ΠΈΡ… стоит Π°Ρ€Π΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π΅Π³ΠΈΠΎΠ½Π°Ρ… ΠΈ странах, Π³Π΄Π΅ находится ваша ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ аудитория. Если ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΊΠΎΠ½Ρ‚ΠΈΠ½Π΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ, Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ хостинг-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ², ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΡ… сразу сСрвСра ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: OVH, Leaseweb ΠΈ 100Tb β€” для Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… сСрвСров, Vultr ΠΈ DigitalOcean β€” для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ…*.

Для нашСго частного CDN Π·Π°ΠΊΠ°ΠΆΠ΅ΠΌ 3 Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… сСрвСра Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚ΠΈΠ½Π΅Π½Ρ‚Π°Ρ…. Π£ Vultr Π½Π° сСрвСрС Π·Π° $5/мСс ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 25GB SSD мСста ΠΈ 1TB Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. ΠŸΡ€ΠΈ установкС Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ послСдний Debian. Наши сСрвСра:

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΈ настраиваСм свой CDN Π€Ρ€Π°Π½ΠΊΡ„ΡƒΡ€Ρ‚, ip: 199.247.18.199

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΈ настраиваСм свой CDN Π§ΠΈΠΊΠ°Π³ΠΎ, ip: 149.28.121.123

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΈ настраиваСм свой CDN Π‘ΠΈΠ½Π³Π°ΠΏΡƒΡ€, ip: 157.230.240.216

* Vultr ΠΈ DigitalOcean ΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‚ $100 ΠΊΡ€Π΅Π΄ΠΈΡ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, зарСгистрированным ΠΏΠΎ ссылкам Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅, сразу послС добавлСния способа ΠΎΠΏΠ»Π°Ρ‚Ρ‹. Автор Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ нСбольшой ΠΊΠΎΠΌΠΏΠ»ΠΈΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎ для Π½Π΅Π³ΠΎ сСйчас вСсьма Π·Π½Π°Ρ‡ΠΈΠΌΠΎ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΡ‚Π½Π΅ΡΠΈΡ‚Π΅ΡΡŒ с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ.

НастраиваСм geoDNS

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΄ΠΎΠΌΠ΅Π½Ρƒ ΠΈΠ»ΠΈ субдомСну CDN направлялся Π½Π° Π½ΡƒΠΆΠ½Ρ‹ΠΉ (блиТайший ΠΊ Π½Π΅ΠΌΡƒ) сСрвСр, Π½Π°ΠΌ понадобится DNS сСрвСр с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ geoDNS.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΈ порядок Ρ€Π°Π±ΠΎΡ‚Ρ‹ geoDNS ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

  1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ IP ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, пославшСго DNS запрос, ΠΈΠ»ΠΈ IP рСкурсивного DNS-сСрвСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ клиСнтского запроса. Π’Π°ΠΊΠΈΠΌΠΈ рСкурсивными сСрвСрами ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ DNS-Ρ‹ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ².
  2. По IP ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΡƒΠ·Π½Π°Π΅Ρ‚ Π΅Π³ΠΎ страну ΠΈΠ»ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π±Π°Π·Ρ‹ GeoIP, ΠΊΠΎΠΈΡ… сСгодня ΠΏΡ€Π΅Π²Π΅Π»ΠΈΠΊΠΎΠ΅ мноТСство. Π•ΡΡ‚ΡŒ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠ΅ бСсплатныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹.
  3. Π’ зависимости ΠΎΡ‚ мСстополоТСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΎΡ‚Π΄Π°Π΅Ρ‚ Π΅ΠΌΡƒ IP-адрСс блиТайшСго CDN сСрвСра.

DNS сСрвСр с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ geoDNS ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с ΡΠ΅Ρ‚ΡŒΡŽ DNS-сСрвСров ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ ΠΈ Anycast ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ:

  • Π‘louDNS ΠΎΡ‚ $9.95/мСс, Ρ‚Π°Ρ€ΠΈΡ„ GeoDNS, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ DNS Failover
  • Zilore ΠΎΡ‚ $25/мСс, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ DNS Failover
  • Amazon Route 53 ΠΎΡ‚ $35/мСс Π·Π° чистых 50М Π³Π΅ΠΎ-запросов. DNS Failover тарифицируСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ
  • DNS Made Easy ΠΎΡ‚ $125/мСс, Π΅ΡΡ‚ΡŒ 10 DNS Failover
  • Cloudflare, функция Β«Geo SteeringΒ» доступна Π² Enterprise Ρ‚Π°Ρ€ΠΈΡ„Π°Ρ…

ΠŸΡ€ΠΈ Π·Π°ΠΊΠ°Π·Π΅ geoDNS слСдуСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° количСство Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Ρ€ΠΈΡ„ запросов ΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ число ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π΄ΠΎΠΌΠ΅Π½Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π² Ρ€Π°Π·Ρ‹ ΠΏΡ€Π΅Π²Π·ΠΎΠΉΡ‚ΠΈ оТидания. ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ ΠΏΠ°ΡƒΠΊΠΎΠ², сканнСров, спамСров ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΠΉ нСчисти Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ бСзустанно.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Ρƒ всСх DNS-сСрвисов Π² ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° нСзамСнимая для построСния CDN услуга β€” DNS Failover. Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Ρ€Π°Π±ΠΎΡ‚Ρ‹ своих сСрвСров ΠΈ Π² случаС отсутствия ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΆΠΈΠ·Π½ΠΈ автоматичСски Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π² DNS-ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… адрСс Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ сСрвСра Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ.

Для построСния нашСго CDN Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ClouDNS, Ρ‚Π°Ρ€ΠΈΡ„ GeoDNS.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ DNS-Π·ΠΎΠ½Ρƒ, ΡƒΠΊΠ°Π·Π°Π² свой Π΄ΠΎΠΌΠ΅Π½. Если CDN Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° субдомСнС, Π° Π³Π»Π°Π²Π½Ρ‹ΠΉ Π΄ΠΎΠΌΠ΅Π½ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‚ΠΎ сразу послС добавлСния Π·ΠΎΠ½Ρ‹ Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ DNS-записи. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ дСйствиС β€” созданиС для CDN Π΄ΠΎΠΌΠ΅Π½Π°/субдомСна Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… A-записСй, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°. Π’ качСствС Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚ΠΈΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ страны, для БША ΠΈ ΠšΠ°Π½Π°Π΄Ρ‹ доступны субрСгионы.

Π’ нашСм случаС CDN Π±ΡƒΠ΄Π΅Ρ‚ поднят Π½Π° субдомСнС cdn.sayt.in. Π”ΠΎΠ±Π°Π²ΠΈΠ² Π·ΠΎΠ½Ρƒ sayt.in, создадим для субдомСна ΠΏΠ΅Ρ€Π²ΡƒΡŽ A-запись ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ всю Π‘Π΅Π²Π΅Ρ€Π½ΡƒΡŽ АмСрику Π½Π° сСрвСр Π² Π§ΠΈΠΊΠ°Π³ΠΎ:

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΈ настраиваСм свой CDN
ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ дСйствиС для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ², Π½Π΅ Π·Π°Π±Ρ‹Π² ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ запись для Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ получится Π² ΠΈΡ‚ΠΎΠ³Π΅:

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΈ настраиваСм свой CDN

ПослСдняя дСфолтная запись Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС Π½Π΅Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹ (Π° это Π•Π²Ρ€ΠΎΠΏΠ°, Африка, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ спутникового ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° ΠΈ Ρ‚.Π΄.) Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½Π° сСрвСр Π²ΠΎ Π€Ρ€Π°Π½ΠΊΡ„ΡƒΡ€Ρ‚Π΅.

На этом базовая настройка DNS Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π·Π°ΠΉΡ‚ΠΈ Π½Π° сайт рСгистратора Π΄ΠΎΠΌΠ΅Π½Π° ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ NS-Ρ‹ Π΄ΠΎΠΌΠ΅Π½Π° Π½Π° Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π΄Π°Π» ClouDNS. И ΠΏΠΎΠΊΠ° NS-Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ ΠΌΡ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ сСрвСра.

Установка SSL сСртификатов

Наш CDN Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ HTTPS, поэтому Ссли Ρƒ вас ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ SSL сСртификаты для Π΄ΠΎΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ субдомСна, β€” Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΈΡ… Π½Π° всС сСрвСра, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ /etc/ssl/вашдомСн/

Если сСртификатов Π½Π΅Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ бСсплатный ΠΎΡ‚ Let’s Encrypt. Для этого ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ ACME Shell script. ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΈ прост Π² настройкС, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ β€” позволяСт ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Π΄ΠΎΠΌΠ΅Π½Π°/субдомСна ΠΏΠΎ DNS Ρ‡Π΅Ρ€Π΅Π· API ΠΎΡ‚ ClouDNS.

ΠœΡ‹ поставим acme.sh Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· сСрвСров β€” СвропСйском 199.247.18.199, с Π½Π΅Π³ΠΎ сСртификаты Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅. Для установки Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ:

root@cdn:~# wget -O - https://get.acme.sh | bash; source ~/.bashrc

Π’ Ρ…ΠΎΠ΄Π΅ установки скрипта Π±ΡƒΠ΄Π΅Ρ‚ создано CRON Π·Π°Π΄Π°Π½ΠΈΠ΅ для дальнСйшСго обновлСния сСртификатов Π±Π΅Π· нашСго участия.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π°Ρ‡Π΅ сСртификата Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ DNS с использованиСм API, поэтому Π² Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅ ClouDNS Π² мСню Reseller API Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ³ΠΎ API ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ для Π½Π΅Π³ΠΎ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ auth-id с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ ΠΏΡ€ΠΎΠΏΠΈΡˆΠ΅ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ ~/.acme.sh/dnsapi/dns_cloudns.sh (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»ΠΎΠΌ dns_clouddns.sh). Π’ΠΎΡ‚ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трСбуСтся Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

CLOUDNS_AUTH_ID=<auth-id>
CLOUDNS_AUTH_PASSWORD="<ΠΏΠ°Ρ€ΠΎΠ»ΡŒ>"

Π’Π΅ΠΏΠ΅Ρ€ΡŒ запросим ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ SSL сСртификата для cdn.sayt.in

root@cdn:~# acme.sh --issue --dns dns_cloudns -d cdn.sayt.in --reloadcmd "service nginx reload"

Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…, Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅, ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для автоматичСской ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²Π΅Π±-сСрвСра послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ обновлСния срока дСйствия сСртификата Π² дальнСйшСм.

Π’Π΅ΡΡŒ процСсс получСния сСртификата ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ Π΄ΠΎ 2 ΠΌΠΈΠ½ΡƒΡ‚, Π½Π΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΌΠ΅Π½Π°, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π΅Ρ‰Π΅ Ρ€Π°Π·. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΡƒΠ΄Π° Π±Ρ‹Π»ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ сСртификаты:

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΈ настраиваСм свой CDN

Π—Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ эти ΠΏΡƒΡ‚ΠΈ, ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ сСртификата Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сСрвСра, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² настройках Π²Π΅Π±-сСрвСра. На ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² Nginx Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌ внимания, β€” Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ настроСнном сСрвСрС ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ сСртификатов Π΅Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

ВсС Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΠΎ SSL, β€” это ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ сСртификат Π½Π° Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… сСрвСра с сохранСниСм ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ сдСлаСм копию:

root@cdn:~# mkdir -p /root/.acme.sh/cdn.sayt.in/
root@cdn:~# scp -r [email protected]:/root/.acme.sh/cdn.sayt.in/* /root/.acme.sh/cdn.sayt.in/

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ сСртификатов Π±Ρ‹Π»ΠΎ рСгулярным создадим Π½Π° ΠΎΠ±ΠΎΠΈΡ… сСрвСрах Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ΅ CRON Π·Π°Π΄Π°Π½ΠΈΠ΅ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

scp -r [email protected]:/root/.acme.sh/cdn.sayt.in/* /root/.acme.sh/cdn.sayt.in/ && service nginx reload

ΠŸΡ€ΠΈ этом доступ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ сСрвСру-источнику Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ настроСн ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ, Ρ‚.Π΅. Π±Π΅Π· Π²Π²ΠΎΠ΄Π° пароля. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это.

Установка ΠΈ настройка Nginx

Для ΠΎΡ‚Π΄Π°Ρ‡ΠΈ статичСского ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Nginx, сконфигурированный Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ proxy-сСрвСра. Обновим списки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ установим Π΅Π³ΠΎ Π½Π° всСх Ρ‚Ρ€Π΅Ρ… сСрвСрах:

root@cdn:~# apt update
root@cdn:~# apt install nginx

ВмСсто Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΈΠ· спойлСра Π½ΠΈΠΆΠ΅:
nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 4096;
    multi_accept on;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log off;
    error_log /var/log/nginx/error.log;

    gzip on;
    gzip_disable "msie6";
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_vary on;
    gzip_types text/plain application/javascript text/javascript text/css application/json application/xml text/xml application/rss+xml;
    gunzip on;            

    proxy_temp_path    /var/cache/tmp;
    proxy_cache_path   /var/cache/cdn levels=1:2 keys_zone=cdn:64m max_size=20g inactive=7d;
    proxy_cache_bypass $http_x_update;

server {
  listen 443 ssl;
  server_name cdn.sayt.in;

  ssl_certificate /root/.acme.sh/cdn.sayt.in/cdn.sayt.in.cer;
  ssl_certificate_key /root/.acme.sh/cdn.sayt.in/cdn.sayt.in.key;

  location / {
    proxy_cache cdn;
    proxy_cache_key $uri$is_args$args;
    proxy_cache_valid 90d;
    proxy_pass https://sayt.in;
    }
  }
}

Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ:

  • max_size β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ кСша, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠΉ доступноС Π½Π° дискС мСсто
  • inactive β€” врСмя хранСния Π·Π°ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ обращался
  • ssl_certificate ΠΈ ssl_certificate_key β€” ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ SSL сСртификата ΠΈ ΠΊΠ»ΡŽΡ‡Π°
  • proxy_cache_valid β€” врСмя хранСния Π·Π°ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
  • proxy_pass β€” адрСс ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСрвСра, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ CDN Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ для ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это sayt.in

Как Π²ΠΈΠ΄ΠΈΠΌ, всё просто. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ лишь ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π² настройкС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·-Π·Π° схоТСсти Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² inactive ΠΈ proxy_cache_valid. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΈΡ… Π½Π° нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ inactive=7d ΠΈ proxy_cache_valid 90d:

  • Ссли запрос Π½Π΅ повторится Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 7 Π΄Π½Π΅ΠΉ, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ удалятся ΠΈΠ· кСша ΠΏΠΎ истСчСнии этого ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°
  • Ссли запрос Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ хотя Π±Ρ‹ Ρ€Π°Π· Π² 7 Π΄Π½Π΅ΠΉ, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π² кСшС Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ ΠΏΠΎ истСчСнии 90 Π΄Π½Π΅ΠΉ ΠΈ ΠΏΡ€ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ запросС Nginx ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ ΠΈΡ…, взяв с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСрвСра

Π—Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ² ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ nginx.conf, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ:

root@cdn:~# service nginx reload

Наш CDN ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π³ΠΎΡ‚ΠΎΠ². Π—Π° $15/мСс. ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ присутствия Π½Π° Ρ‚Ρ€Π΅Ρ… ΠΊΠΎΠ½Ρ‚ΠΈΠ½Π΅Π½Ρ‚Π°Ρ… ΠΈ 3 Π’Π± Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°: ΠΏΠΎ 1 Π’Π± Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ CDN

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΏΠΈΠ½Π³ΠΈ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ CDN ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… гСографичСских Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ. Для этого ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠΈΠ½Π³-сСрвисы.

Π’ΠΎΡ‡ΠΊΠ° запуска
Π₯ост
IP
Avg time, мсСк

ГСрмания, Π‘Π΅Ρ€Π»ΠΈΠ½
cdn.sayt.in
199.247.18.199
9.6

НидСрланды, АмстСрдам
cdn.sayt.in
199.247.18.199
10.1

Ѐранция, ΠŸΠ°Ρ€ΠΈΠΆ
cdn.sayt.in
199.247.18.199
16.3

ВСликобритания, Π›ΠΎΠ½Π΄ΠΎΠ½
cdn.sayt.in
199.247.18.199
14.9

Канада, Π’ΠΎΡ€ΠΎΠ½Ρ‚ΠΎ
cdn.sayt.in
149.28.121.123
16.2

БША, Π‘Π°Π½-Ѐранциско
cdn.sayt.in
149.28.121.123
52.7

БША, Даллас
cdn.sayt.in
149.28.121.123
23.1

БША, Чикаго
cdn.sayt.in
149.28.121.123
2.6

БША, Нью-Π™ΠΎΡ€ΠΊ
cdn.sayt.in
149.28.121.123
19.8

Π‘ΠΈΠ½Π³Π°ΠΏΡƒΡ€
cdn.sayt.in
157.230.240.216
1.7

Япония, Вокио
cdn.sayt.in
157.230.240.216
74.8

Австралия, Π‘ΠΈΠ΄Π½Π΅ΠΉ
cdn.sayt.in
157.230.240.216
95.9

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅. РазмСстим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΠΊΠΎΡ€Π½Π΅ основного сайта Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ test.jpg ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π΅Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· CDN. Π‘ΠΊΠ°Π·Π°Π½ΠΎ, β€” сдСлано. ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ отдаСтся быстро.

НапишСм нСбольшой скрипт Π½Π° случай, Ссли Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π° CDN-Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ кСш.
purge.sh

#!/bin/bash
if [ -z "$1" ]
then
    echo "Purging all cache"
    rm -rf /var/cache/cdn/*
else
    echo "Purging $1"
    FILE=`echo -n "$1" | md5sum | awk '{print $1}'`
    FULLPATH=/var/cache/cdn/${FILE:31:1}/${FILE:29:2}/${FILE}
    rm -f "${FULLPATH}"
fi

Для удалСния всСго кСша достаточно просто Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

root@cdn:~# ./purge.sh /test.jpg

ВмСсто Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ²

НапослСдок Ρ…ΠΎΡ‡Ρƒ Π΄Π°Ρ‚ΡŒ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… совСтов, Π΄Π°Π±Ρ‹ сразу ΠΏΠ΅Ρ€Π΅ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π³Ρ€Π°Π±Π»ΠΈ, сдСлавшиС Π² своС врСмя Π±ΠΎΠ»ΡŒΠ½ΡƒΡŽ Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΌΠ½Π΅:

  • Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ отказоустойчивости CDN рСкомСндуСтся Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ DNS Failover, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠΉ быстро ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ A запись Π² случаС ΠΏΠΎΠ»ΠΎΠΌΠΊΠΈ сСрвСра. ДСлаСтся это Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния DNS записями Π΄ΠΎΠΌΠ΅Π½Π°
  • Π‘Π°ΠΉΡ‚Ρ‹ с ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ гСографичСским ΠΎΡ…Π²Π°Ρ‚ΠΎΠΌ Π±Π΅Π· сомнСния Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большого числа Ρ‚ΠΎΡ‡Π΅ΠΊ CDN, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π±Π΅Π· Ρ„Π°Π½Π°Ρ‚ΠΈΠ·ΠΌΠ°. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ сущСствСнной Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² сравнСнии с ΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΌ CDN, Ссли Π²Ρ‹ размСститС сСрвСра Π² 6-7 мСстах: Π•Π²Ρ€ΠΎΠΏΠ°, БСвСрная АмСрика (восток), БСвСрная АмСрика (Π·Π°ΠΏΠ°Π΄), Π‘ΠΈΠ½Π³Π°ΠΏΡƒΡ€, Австралия, Π“ΠΎΠ½ΠΊΠΎΠ½Π³ ΠΈΠ»ΠΈ Япония
  • Иногда хостСры Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π΅Π½Π΄ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сСрвСра для Ρ†Π΅Π»Π΅ΠΉ CDN. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ Π²Π΄Ρ€ΡƒΠ³ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡΠ΅Ρ‚ΡŒ доставки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΊΠ°ΠΊ сСрвис, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ хостинг-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°
  • Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°Ρ€Ρ‚Ρƒ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ связаны ΠΊΠΎΠ½Ρ‚ΠΈΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ это ΠΏΡ€ΠΈ построСнии сСти доставки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°
  • ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΈΠ½Π³ΠΈ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… мСст ΠΊ вашим сСрвСрам. Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ блиТайшиС ΠΊ CDN-Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ GeoDNS
  • Π’ зависимости ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ нСлишним Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Nginx ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ трСбования ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° сСрвСр. Π’ этом ΠΌΠ½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎ кСшС Nginx β€” здСсь ΠΈ ускорСнии Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ…: здСсь ΠΈ здСсь

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