Интеграция 1С-Битрикс с Cloudflare
1С-Битрикс исторически рассчитан на прямое соединение клиента с сервером. При размещении за Cloudflare ломается определение IP пользователя, перестаёт работать проактивная защита, композитный кэш конфликтует с CDN-кэшем, а модуль security начинает банить IP-адреса Cloudflare вместо реальных посетителей. Интеграция — это не «подключить DNS и забыть», а системная настройка обоих сторон.
Проблема определения IP
Cloudflare проксирует трафик, подставляя свой IP в REMOTE_ADDR. Реальный IP клиента передаётся в заголовке CF-Connecting-IP. Битрикс использует $_SERVER['REMOTE_ADDR'] повсеместно: в модуле security (проактивный фильтр, WAF), в модуле statistic (статистика посещений), в модуле sale (геолокация для доставки).
Решение — в файле dbconn.php (или /bitrix/.settings.php) переопределить REMOTE_ADDR:
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
Этот код должен выполняться до подключения ядра Битрикс. Размещайте его в самом начале /bitrix/php_interface/dbconn.php.
Безопасность: проверяйте, что запрос действительно пришёл от Cloudflare. Список IP-диапазонов Cloudflare доступен по адресу https://www.cloudflare.com/ips-v4. Если сервер принимает прямые подключения в обход Cloudflare, злоумышленник может подделать заголовок CF-Connecting-IP. Закройте порт 80/443 для всех IP, кроме диапазонов Cloudflare, на уровне файрвола.
Конфликт кэшей: композит vs. Cloudflare
Композитный кэш Битрикс (composite) отдаёт HTML-снимок страницы без выполнения PHP. Cloudflare Cache тоже кэширует HTML. Получается двойное кэширование с разными правилами инвалидации — страница обновляется в Битрикс, но Cloudflare продолжает отдавать старую версию.
Варианты решения:
Вариант 1: Отключить кэширование HTML в Cloudflare. В Page Rules задайте Cache Level: Bypass для *.php и динамических страниц. Cloudflare будет кэшировать только статику (JS, CSS, изображения). Композит Битрикс работает штатно. Это рекомендуемый подход для большинства проектов.
Вариант 2: Отключить композит, кэшировать в Cloudflare. Подходит для информационных сайтов с редким обновлением. Настройте Edge Cache TTL в Cloudflare и используйте Cloudflare API для сброса кэша при обновлении контента. Вызов POST /zones/{zone_id}/purge_cache из обработчика OnAfterIBlockElementUpdate.
Вариант 3: Комбинированный. Композит работает для авторизованных (не кэшируется в Cloudflare), Cloudflare кэширует страницы для анонимов. Разделение через Cache-Control: private для авторизованных и Cache-Control: public, max-age=300 для анонимов. Заголовки выставляются в init.php на основании $USER->IsAuthorized().
Настройка SSL
Cloudflare предлагает три режима SSL: Flexible, Full, Full (Strict). Для Битрикс единственный правильный вариант — Full (Strict) с валидным сертификатом на сервере.
При Flexible-режиме Cloudflare подключается к серверу по HTTP. Битрикс не видит HTTPS-соединение, \Bitrix\Main\Context::getCurrent()->getRequest()->isHttps() возвращает false. Результат: бесконечные редиректы, если в настройках сайта включён «Переадресация на HTTPS», или формы отправляются по HTTP.
Если Full (Strict) невозможен (нет сертификата на сервере), используйте Cloudflare Origin Certificate — бесплатный сертификат, который работает только при проксировании через Cloudflare.
Проактивная защита и WAF
Модуль security Битрикс содержит собственный WAF. При работе через Cloudflare оба WAF активны одновременно. Конфликты:
- Cloudflare WAF блокирует запрос, Битрикс пишет в лог ошибку 403 без деталей — непонятно, кто заблокировал.
- Правила Cloudflare и Битрикс могут противоречить — Cloudflare пропускает запрос, Битрикс блокирует, или наоборот.
Рекомендация: используйте Cloudflare WAF как первый рубеж (блокировка ботов, DDoS, известных атак), а проактивный фильтр Битрикс — как второй (специфичные для CMS атаки). Не отключайте ни один из них полностью.
Сроки настройки
| Задача | Срок |
|---|---|
| DNS, SSL, базовая настройка | 2–3 часа |
| Переопределение IP + файрвол | 2–3 часа |
| Настройка кэширования (Page Rules, композит) | 1 день |
| WAF: согласование правил | 1–2 дня |
| Тестирование (корзина, авторизация, формы, ЛК) | 2–3 дня |
| Мониторинг первую неделю | фоново |
| Итого | 1–2 недели |
Отдельно учитывайте тестирование интеграций: платёжные системы, callback-уведомления от ЕРИП или банков, webhooks от 1С. Все они обращаются к серверу напрямую, и если порты закрыты для не-Cloudflare IP — уведомления перестанут приходить. Для callback-URL добавьте исключения в файрвол или используйте отдельный поддомен без проксирования.







