Если у тебя сайт на российском хостинге, ты наверняка хоть раз кидал ссылку в Telegram или Facebook* и видел: заголовок подтянулся, описание подтянулось, а картинка — нет. Или превью вообще пустое и «вечно грузится». Ты лезешь в код, проверяешь OG-теги — они на месте. Сбрасываешь кеш — не помогает. Открываешь Facebook Debugger, а там «Could Not Connect To Server». И так по кругу неделями.
Я провозился с этим три месяца. Перепробовал всё, что советует интернет, и только потом докопался до настоящей причины — она оказалась не в сайте вообще. Рассказываю по шагам, чтобы ты не терял те месяцы, что потерял я.

Если коротко
У сайта на российском хостинге превью ссылок часто ломается не из-за OG-тегов и не из-за кеша. Ломается потому, что хостинг (или магистральный провайдер) режет исходящий трафик от твоего сервера к IP-адресам соцсетей. Краулер соцсети приходит к тебе, но твой ответ ему не доходит — теряется по дороге из-за фильтрации.
Чинится это не на сайте, а на уровне сети: нужно, чтобы ответ соцсети уходил из-за рубежа. Самый чистый способ — поставить за границей небольшой реверс-прокси и через GeoDNS отправлять иностранных ботов на него, а российских пользователей оставить на основном сервере напрямую. Дальше — подробно.
Симптомы: узнаёшь себя?
- В Facebook Sharing Debugger при проверке ссылки — «Curl Timeout» или «Could Not Connect To Server / Response Code 418».
- В Telegram превью «вечно грузится» или не появляется совсем, а у иностранных ссылок — появляется.
- Во ВКонтакте картинка не подтягивается или подтягивается через раз.
- При этом картинка открывается по прямой ссылке в браузере, а OG-теги в исходном коде на месте.
- Онлайн-проверялки показывают, что всё хорошо, — но в реальных постах превью нет.
- Хуже всего: работает нестабильно — то появилось, то пропало.
Если хотя бы половина совпала — читай дальше, скорее всего это твой случай.
Почему это так трудно поймать
Главная ловушка в том, что онлайн-валидаторы врут. Facebook Debugger, разные «OG preview checker», Telegram WebpageBot используют современные HTTP-клиенты и часто стоят на серверах, у которых нет проблем с маршрутом до твоего сайта. Поэтому они показывают зелёное.
А боевые краулеры соцсетей — те, что реально строят превью, когда человек кидает ссылку в чат, — другие. Они приходят с конкретных IP-диапазонов, и твой ответ им должен пройти обратный сетевой путь, который как раз и ломается. Получается: «по приборам всё хорошо», а в жизни не работает. И ты бесконечно крутишь настройки сайта, хотя сайт ни при чём.
КурсыСравнение 135 курсов по SMMЦены, школы, длительность, рассрочка
Что все пробуют первым делом и почему это обычно не помогает
Перечислю ложные следы, по которым меня вела дорога приключений. Если ты уже всё это проверил и не помогло — значит, проблема глубже, и ты на верном пути.
- Переписать OG-теги. Полезно, если их реально не было. Но если они есть и валидны — это не оно.
- Сбросить кеш. Плагин, CDN, Redis. На минуту кажется, что помогло, потом снова. Не оно.
- Поменять формат картинки. Тут есть здравое зерно: WebP в og:image многие соцсети не показывают (Telegram, WhatsApp, часть Facebook и ВК скачивают, но не рендерят). Если у тебя og:image в WebP — переведи в JPEG или PNG, это реально нужно. Но если уже JPEG, а превью нет — дело не в формате.
- SSL и SNI. Коварная штука: если на одном IP несколько сайтов и нет сертификата по умолчанию, краулеры без SNI получают чужой сертификат. Проверка:
echo | openssl s_client -connect ТВОЙ-ДОМЕН:443 -noservername | openssl x509 -noout -subject— должен вернуться сертификат твоего домена. Если чужой — чини. Если твой — едем дальше. - gzip. Тоже бывает: если сервер отдаёт
Content-Encoding: gzipтем, кто его не просил, боты видят бинарный мусор. Лечитсяgunzip onв nginx. Но и это не объясняет «вообще не доходит». - Антибот-плагины и фаерволы. CleanTalk, Wordfence и подобные иногда банят легитимных краулеров. Проверь и отключи на тест. Но если в логах сервера ты видишь, что бот соцсети приходит и получает 200, — плагин не виноват.
Если ты прошёл весь этот список — это и есть то, что я пробовал «те самые три месяца».
К счастью, я со всем разобрался!

Настоящий корень проблемы
В России на магистральном уровне стоят системы фильтрации трафика и ТСПУ. По разным причинам они режут трафик к части IP-диапазонов крупных соцсетей, особенно Meta. Важная деталь: фильтрация часто односторонняя и асимметричная.

- Краулер соцсети приходит к твоему серверу — входящий пакет проходит.
- Твой сервер отвечает ему.
- А этот ответ обратно к IP соцсети отваливается в пути — его отбрасывает фильтр на аплинке.
- Краулер не получает ответа, повторяет запрос несколько раз и сдаётся → в дебаггере ты видишь «не смог подключиться».
Самое печальное, что можно увидеть — это ошибка 418 I’m a teapot.

На пальцах: краулер приходит к тебе на сервер, пытается забрать коробку с вещами, но не может выйти, потому что дверь исчезает.

Почему «через раз»: у соцсетей много дата-центров с разными IP. Часть диапазонов фильтр режет, часть — нет. Какой дата-центр возьмётся строить превью в этот раз — такой и результат. Отсюда вся нестабильность.
И почему Telegram и ВК иногда работают, а Facebook нет: у разных соцсетей разные IP-диапазоны, под фильтр попадают не все одинаково.
Вывод: проблема не на твоём сайте, а в сети между твоим сервером и серверами соцсети. Правки сайта её не вылечат.
Как убедиться на 100%, что проблема в сервере (диагностика за 5 минут)
Не верь на слово — проверь. Зайди на сервер по SSH.
Тест 1. Доходит ли твой сервер до соцсети напрямую.
curl -sI --max-time 10 https://www.facebook.com/
curl -sI --max-time 10 https://graph.facebook.com/
Если это виснет и отваливается по таймауту — диагноз подтверждён: твой сервер не достучался до Facebook. Для сравнения curl https://www.google.com/ обычно работает мгновенно — значит «интернет есть», режется именно соцсеть.
Тест 2. Приходит ли бот и что он получает.
grep -iE "facebookexternalhit|TelegramBot|vkShare" /путь/к/access.log | tail -20
Если видишь, что бот приходит и получает 200, — входящий путь жив, а проблема в обратном. Это и есть асимметричная фильтрация.
Решение: вынести «точку ответа» за границу
Раз ответ из России не доходит, нужно, чтобы он уходил из-за рубежа. При этом российских пользователей трогать нельзя — для них всё и так работает, и гнать их через заграницу значит добавить тормоза и уменьшить TTFB и LCP.

Правильная архитектура — гео-разделение:
- Российские посетители идут на твой основной сервер напрямую, быстро, как сейчас.
- Все остальные, включая краулеров соцсетей, идут через зарубежный прокси-сервер, у которого путь до соцсетей чистый.
Прокси при этом прозрачный: он не хранит копию сайта, а просто пересылает запрос на твой основной сервер и возвращает ответ. Контент идентичен, поэтому это не клоакинг и для SEO безопасно — Яндекс ходит из России на основной сервер, Googlebot из США через прокси, видят одно и то же.

Что понадобится
- Маленький VPS за границей (Польша, Германия, Нидерланды, Финляндия). Хватит самого дешёвого: 1 ядро, 2 ГБ RAM, около 3–5 € в месяц. Важно проверить, что трафик ноды реально идёт за границей, а не заворачивается обратно через Россию: тот же
curl -sI https://www.facebook.com/с новой ноды должен работать мгновенно. - GeoDNS-провайдер — DNS-хостинг, умеющий отдавать разные IP в зависимости от страны запроса. Обычный DNS-хостинг так не умеет.
Конкретно мы в Checkroi использовали DNS-хостинг от Bunny, потому что в нём в бесплатном тарифе есть геораспределение запросов.
Пошагово
- Подними реверс-прокси на зарубежном VPS (nginx): он принимает запрос, идёт за страницей на твой основной сервер по его IP с правильным заголовком
Hostи SNI, возвращает ответ. Сертификат Let’s Encrypt выпусти прямо на этой ноде — не копируй приватный ключ с основного сервера. - Заведи DNS-зону у GeoDNS-провайдера и перенеси все записи один в один. Самый частый провал — забыть запись: поддомен CDN, почтовые MX, SPF, DKIM, проверочные TXT. Сверь машинно, что в новой зоне есть всё, что было в старой.
- Настрой гео-правило на записи домена: запрос из России — IP основного сервера, по умолчанию (весь остальной мир) — IP зарубежного прокси.
- Переключи NS-серверы домена у регистратора на адреса GeoDNS-провайдера. Делегирование доменов
.ruраскатывается обычно от 20 минут до пары часов. - Выпусти сертификат на прокси и проверь: из России домен резолвится в основной сервер, из-за рубежа — в прокси, Facebook Debugger показывает превью.
КурсыСравнение 62 курсов для веб-разработчиковЦены, школы, длительность, рассрочка
Важный нюанс: где лежит сама картинка og:image
Если картинка превью лежит на отдельном CDN-хосте (например, через CDN вида cdn.твойсайт.ru), проверь, что этот хост тоже достижим из-за рубежа. Бывает, что страницу прокси отдал, а картинку соцсеть идёт качать на отдельный CDN, который из-за границы флакает. Тогда либо переведи og:image на основной домен (он пойдёт через прокси), либо проксируй и CDN-хост.
У нас на Checkroi была ровно эта вторая часть проблемы: картинка лежала на CDN, и хватило одной настройки исключений, чтобы og:image начал отдаваться с основного домена и поехал через прокси.
Альтернатива попроще, но она не подойдёт для России
Можно завернуть весь домен через Cloudflare. Тогда ответы соцсетям уходят с зарубежных узлов, и превью чинится само. Настраивается за час. Но тогда вся твоя аудитория, включая российскую, ходит через Cloudflare, а его узлы в РФ периодически штормит. То есть ради меньшинства (превью в соцсетях) ты рискуешь ухудшить опыт основным пользователям. Гео-разделение чище: оно не трогает 95% трафика.
Перед всем этим — напиши хостеру
Иногда «потеря исходящего трафика к соцсети» — это не глобальная фильтрация, а кривой маршрут у конкретного хостера, и чинится с их стороны. Напиши в поддержку: «С моего VPS не доходят пакеты до подсетей Facebook (AS32934): входящие соединения проходят, а наши ответы не доставляются. К другим подсетям той же сети проходит. Прошу проверить маршрутизацию исходящего трафика».
Если ответят, что это магистраль или ТСПУ, — тогда нужен прокси.
Чеклист «сделай по порядку»
- Проверь формат og:image — если WebP, переведи в JPEG или PNG.
- Проверь SSL без SNI — должен быть твой сертификат.
- Проверь gzip — ответ без
Accept-Encodingдолжен быть несжатым. - Проверь, что бот соцсети приходит и получает 200 (логи).
- Главный тест:
curl -sI https://www.facebook.com/с твоего сервера — виснет? Значит фильтрация исходящего. - Напиши хостеру про маршрут к подсетям соцсети.
- Если не чинят — подними зарубежный прокси и GeoDNS-сплит (РФ на основной, мир на прокси).
- Перенеси все DNS-записи один в один, не забудь почту и CDN.
- Выпусти Let’s Encrypt на прокси
- Переключи NS-сервера на GeoDNS там, где ты покупал свой домен
- Подожди 2-24 часа, проверь гео и Facebook Debugger.
Эта статья написана по горячим следам собственной трёхмесячной боли — мы в Checkroi прошли весь путь до рабочих превью во всех соцсетях за 3 месяца боли и страданий. Если ты держишь сайт на российском хостинге и упёрся в то же самое — теперь у тебя есть карта.
Кстати, если хочешь разобраться в вебе и инфраструктуре глубже
Такие задачи — это уже территория веб-разработки и DevOps. Если хочется не просто чинить по инструкции, а понимать, как всё устроено под капотом, — посмотри подборку курсов по программированию и IT: мы свели их в каталог по направлению «Программирование и IT» с честными рейтингами и сравнением.
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Нейросети: практический курс Перейти на сайт курса | 25 990 ₽ | 181 667 ₽/мес. | 3 месяца | Обзор курса | |
| Нейросети для рабочих задач Перейти на сайт курса | 29 800 ₽ | 2483 ₽/мес. | 1 месяц | Обзор курса | |
| Нейросети. Практический курс Перейти на сайт курса | 74 900 ₽ | 6242 ₽/мес. | 3 месяца | Обзор курса | |
| Нейросети для каждого: как решать рабочие задачи быстрее Перейти на сайт курса | 37 300 ₽ | 2763 ₽/мес. | 6 недель | Обзор курса | |
| Программирование для анализа данных Перейти на сайт курса | 134 640 ₽ | 365 500 ₽/мес. | 12 месяцев | Обзор курса | |
| Профессия «Python-разработчик» Перейти на сайт курса | 157 335 ₽ | 5987 ₽/мес. | 10 месяцев | Обзор курса | |
| Профессия «Fullstack-разработчик на PHP» Перейти на сайт курса | 166 715 ₽ | 5378 ₽/мес. | 12 месяцев | Обзор курса | |
| Frontend-разработчик с нуля Перейти на сайт курса | 123 700 ₽ | 5385 ₽/мес. | 10 месяцев | Обзор курса | |
| Fullstack-разработчик на Python Перейти на сайт курса | 175 800 ₽ | 7125 ₽/мес. | 21 месяц | Обзор курса | |
| Профессия «Разработчик игр на Unity с нуля» Перейти на сайт курса | 130 521 ₽ | 3679 ₽/мес. | 10 месяцев | Обзор курса |
Больше программ — в полном каталоге курсов по программированию и IT




Блин, наконец-то мне кто-то нормально объяснил, почему ог не показывались. Всю голову сломал, потому что на тильдовских сайтах всё нормально, а на моём личном ничего не работало)))
Спасибо!