CDN держит копии файлов в десятках стран и отдаёт посетителю из ближайшей. Сайт открывается у тех, у кого не открывался, и грузится быстрее у всех остальных. Российский сервер требует особой схемы — обычная не работает.
Замер на файле 1 МБ с одного сайта, до и после подключения:
| Откуда | С сервера напрямую | Через CDN |
|---|---|---|
| Сингапур | не открывался | 0,06 с |
| Украина | не открывалась | 0,85 с |
| США | 1,6 с и таймауты | 0,18–0,28 с |
| Бразилия | 2,6–3,1 с | 1,12 с |
| Индия | не открывалась | 0,56 с |
Выигрывают две группы. Первая — те, кто физически далеко. Вторая — те, кто сидит через VPN: выход у них за границей, поэтому для сайта они иностранцы и едут к нему через полмира. Это большая часть российской аудитории, и без CDN она получает сайт в худшем виде.
Обычная инструкция «зарегистрируйтесь в CDN и укажите адрес сайта» с сервером в России не работает. Нужны три отличия.
cdn.вашсайт.ru — туда PDF, картинки, видео, скрипты. Страницы остаются на сервере: они весят десятки килобайт и доходят везде. Так поломка CDN стоит вам картинок, а не сайта, и откатывается одной строкой.OriginType: 2 плюс идентификатор хранилища; если передать только идентификатор, запрос вернёт успех и ничего не изменит.cdn.вашсайт.ru на адрес зоны, дальше сертификат выпускается кнопкой у провайдера.Четыре правила — без них проверка врёт.
Блокировка по IP в России выглядит не как ошибка, а как тишина. У домашних абонентов сайт «думает» и не открывается, а с серверов, из дата-центров и с вашего ноутбука за VPN всё работает. В публичном реестре такой блокировки может не быть. Пинг с сервера, uptime-сервис и «у меня открывается» её не видят — вы узнаёте от клиентов, через неделю.
Мерить нужно с домашних линий операторов, а не из дата-центров. Это отсекает почти все привычные инструменты: у check-host из 56 нод российских две, обе в одном дата-центре в Москве и Петербурге. Ваш второй сервер у другого хостера — тоже дата-центр.
Домашние пробы есть у двух сетей волонтёров. Обе бесплатные, замер по API:
| Сеть | Домашних проб в России | Что нужно |
|---|---|---|
| Globalping | 29 | ничего: без регистрации, 250 проб-замеров в час |
| RIPE Atlas | 103 | аккаунт и своя проба на любом сервере, она зарабатывает кредиты |
Globalping хватает для ежедневного дозора, и с него можно начать за десять минут. Числа — живой замер на дату публикации, они плывут: пробы у волонтёров включаются и выключаются. Мобильные сети покрыты слабо в обеих — их проверяйте телефоном с выключенным Wi-Fi.
Ниже готовый скрипт. Он раз в день опрашивает ваш сайт с пятнадцати домашних проб России и трёх контрольных из Германии, различает три исхода и присылает строку в Telegram. Только стандартная библиотека Python, ничего ставить не надо.
python3 tspu-watch.py --targets ваш-сайт.ru
Как читать его отчёт:
| Строка | Что это | Что делать |
|---|---|---|
| OK · РФ 15/15 · контроль 3/3 | Все домашние пробы ответили | Ничего |
| БЛОК · РФ 2/15 · контроль 3/3 | Россия молчит, из-за границы сайт жив, повтор через пять минут подтвердил | Переключать на запасной адрес |
| ЛЕЖИТ · РФ 0/15 · контроль 0/3 | Молчат все | Это сервер, не блокировка: SSH, панель хостера, диск, память |
| OK (шум) | Первый замер напугал, повтор чистый | Ничего: пробы у волонтёров ходят и падают |
--tg-api.Два шага, именно в этом порядке: промпт ссылается на файл по имени, поэтому сначала файл.
Это инструкция для ИИ-агента: методика проверки, развилка на три случая, порядок переезда домена без разрыва, дозор блокировки адреса (скрипт — ниже, в разделе про блокировку) и список граблей. Агент прочитает её сам — вам открывать не обязательно.
Откройте своего ИИ-агента с доступом к терминалу — подойдёт любой: Claude, ChatGPT, Gemini, Cursor — в той же папке, куда положили файл. Скопируйте промпт, подставьте свои данные в блок «Вводные» и отправьте. Внутри запреты, которые не дадут агенту сломать боевой сайт: не проксировать сайт целиком, не переключать домен до выпуска сертификатов, не выключать старый путь.
Разберись, почему мой сайт медленно грузится или не открывается у части посетителей,
и почини. Работай по файлу cdn-runbook-llm.md — там методика и грабли, следуй ей.
## Вводные
- Домен: ПРИМЕР.ru
- Сервер: IP, доступ по SSH, веб-сервер — nginx / Caddy / другой
- Жалоба: КТО и ЧТО именно видит. Например: «клиент из Екатеринбурга не открывает
сайт вообще, при этом мой второй сайт на другом сервере у него открывается»
- Второй сервер (если есть): IP
- Основная аудитория: страна/регион, откуда идёт большинство посетителей
## Порядок работы
1. СНАЧАЛА ДИАГНОСТИКА, НИЧЕГО НЕ МЕНЯЙ.
Определи, какая из трёх задач у меня на самом деле: медленно из далёких стран /
не открывается у части своих / заблокирован домен. Это разные болезни с разным
лечением, и по симптому «сайт не открывается» их не различить.
Мерь строго по правилам ранбука: тяжёлый файл, сверка байтов с Content-Length,
браузерный Accept-Encoding, минимум три независимые точки, три прогона со
статистикой. Одиночный замер не считается доказательством — отказы ротируют.
2. ПОКАЖИ ЗАМЕРЫ И ДИАГНОЗ ДО ТОГО, КАК ЧТО-ТО ДЕЛАТЬ.
Таблицей: откуда, сколько байт, за сколько секунд, сколько успехов из скольких.
Отдельной строкой — вывод, какая это из трёх задач и почему именно она.
Если задача не решается CDN — скажи прямо и не предлагай его.
3. ПРЕДЛОЖИ РЕШЕНИЕ С ЦЕНОЙ И РИСКАМИ.
Что делаем, сколько стоит в месяц, что становится точкой отказа, как откатывать
и за сколько. Дождись моего «да» перед изменениями на боевом.
4. ДЕЛАЙ МЕЛКИМИ ШАГАМИ, КАЖДЫЙ ПРОВЕРЯЙ.
После любой правки конфига проверь, что остальные сайты на сервере живы.
Бэкап конфига до правки — обязательно.
5. ПРИЁМКА ОБЯЗАТЕЛЬНА.
Тяжёлый файл, байты сходятся, три прогона по нодам, сравнение с эталоном «до».
Отдельно — замер моей основной страны: если стало медленнее, это не победа.
## Жёсткие запреты
- Не проксировать сайт целиком через CDN. Только статика отдельным хостом.
- Не переключать DNS, пока сертификаты не выпущены на новом адресе.
- Не выключать старый путь, пока новый не проверен: во время распространения
адреса должны работать оба.
- Не трогать почтовые записи (MX).
- Не трогать поддомены с видеозвонками и голосом — они ходят мимо веб-прокси.
- Не делать выводов по одному замеру и по главной странице.
## Что вернуть в конце
- Таблицу «было / стало» по тем же точкам замера
- Что именно изменено и в каких файлах, с путями
- Инструкцию по откату в две-три строки
- Список того, что осталось незакрытым
Померь доступность и скорость моего сайта ПРИМЕР.ru по методике из
cdn-runbook-llm.md. Ничего не меняй, только замеры и вывод.
Нужно: тяжёлый файл (не главная), сверка байтов с Content-Length, три прогона
по нодам из разных стран, отдельно моя основная страна.
Верни таблицу и один абзац вывода: какая из трёх задач у меня — медленно из
далёких стран, не открывается у части своих, или всё в порядке и чинить нечего.
Если чинить нечего — так и скажи, не придумывай работу.
Поставь ежедневный дозор блокировки адреса для моих сайтов по части 5 файла
cdn-runbook-llm.md. Скрипт уже написан — tspu-watch.py лежит в этой же папке,
не переписывай его и не меняй правило тревоги внутри.
## Вводные
- Сайты: по одному домену на каждый сервер — ПРИМЕР.ru, ПРИМЕР2.ru
- Telegram: токен бота и chat_id в .env как TG_BOT_TOKEN и TG_CHAT_ID.
Если их нет — объясни в три строки, как получить через @BotFather
и @userinfobot, и остановись до моего ответа.
- Где запускать: мой компьютер (macOS / Windows / Linux) или сервер (ОС)
- Запасной адрес в другой сети: есть IP / нет
## Что сделать
1. Прогони скрипт один раз руками с --no-confirm и покажи вывод целиком.
Все строки OK — идём дальше. Есть ЛЕЖИТ или БЛОК — сначала разбираем это.
2. Сделай targets.txt (домены с комментарием, какой сервер) и обёртку
запуска, которая подхватывает .env и пишет лог в файл.
3. Поставь в планировщик раз в день утром по моему времени: cron, launchd
или Планировщик заданий Windows. Покажи, как убедиться, что задача
стоит и когда сработает в следующий раз.
4. Отчёт должен приходить каждый день, даже когда всё ОК: молчание дозора
неотличимо от его смерти. Флаг --quiet-ok не ставить.
5. Если запасного адреса нет — отдельной строкой: дозор без запасного входа
только сообщает о простое, а не сокращает его.
## Запреты
- Не менять порог и правило тревоги в скрипте.
- Не ставить чаще раза в час: лимит Globalping — 250 проб-замеров в час
с адреса, и это общий ресурс.
- Ничего не менять в DNS и на сервере: дозор смотрит, переключаю я.
- С сервера в России не слать в api.telegram.org напрямую, если оттуда
не открывается: либо --tg-api с адресом прокси, либо запуск с компьютера.
## Что вернуть
- Вывод первого прогона
- Строку планировщика, путь к обёртке и к логу
- Как выглядит тревога и что я делаю по каждому из трёх исходов, по строке
Все гайды рабочие: каждый — то, что реально крутится у меня, а не пересказ документации.