wpssl.ru wordpress WPSSL.ru

Настройка SSL для WordPress при использовании CDN и Varnish: пошаговое руководство

Диагностика проблем с SSL при использовании CDN и Varnish

Использование CDN совместно с Varnish для ускорения WordPress-сайта часто приводит к частым ошибкам SSL, таким как «смешанный контент», «ERR_TOO_MANY_REDIRECTS», или отсутствие HTTPS на фронтенде. Основная причина — некорректная обработка HTTPS-запросов на уровне прокси и кеша, из-за чего WordPress не понимает, что запрос изначально был защищенным.

Как понять, что проблема именно в Varnish и CDN

  • Проверка заголовков ответа от сайта через curl:
    curl -I https://example.com
    Если видим редиректы с HTTPS на HTTP или отсутствует заголовок X-Forwarded-Proto: https, вероятно, проблема в прокси.
  • Ошибки смешанного контента в консоли браузера — ресурсы грузятся по HTTP вместо HTTPS.
  • В логах Varnish или CDN можно найти записи о неправильной обработке протокола.

Пошаговое решение: настройка SSL при использовании CDN и Varnish

1. Настройка Varnish для корректной передачи HTTPS

Varnish не работает с HTTPS напрямую, поэтому обычно SSL терминируется на nginx или другом обратном прокси, а Varnish принимает HTTP-запросы. Чтобы WordPress видел, что исходный запрос был HTTPS, нужно правильно настроить заголовки.

Добавьте в конфигурацию nginx (или другого прокси), который принимает SSL:

proxy_set_header X-Forwarded-Proto $scheme;

Или для Apache:

RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}

В конфиге Varnish (vcl_recv) добавьте:

if (req.http.X-Forwarded-Proto) {
    set req.http.X-Forwarded-Proto = req.http.X-Forwarded-Proto;
} else {
    set req.http.X-Forwarded-Proto = "http";
}

2. Настройка WordPress для правильного определения HTTPS

В wp-config.php добавьте следующий код, чтобы WordPress учитывал заголовок и корректно формировал ссылки:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

3. Настройка CDN

В большинстве CDN (Cloudflare, KeyCDN, BunnyCDN и др.) нужно включить режим «Full SSL» или «Full SSL (strict)», чтобы CDN корректно проксировал HTTPS-запросы.

Также убедитесь, что CDN не переопределяет или не удаляет заголовок X-Forwarded-Proto.

Проверка результата после внедрения

  • Перезапустите сервисы nginx, Varnish и очистите кеш CDN.
  • Проверьте через curl или браузер, что сайт отвечает по HTTPS без редиректов или ошибок:
curl -I https://example.com
HTTP/2 200
... (нет редиректов с HTTPS на HTTP)
  • В консоли браузера не должно быть ошибок смешанного контента.
  • Проверьте, что WordPress правильно генерирует HTTPS-ссылки в меню, медиа и API.

Частые ошибки и пути их исправления

  • Ошибка: «ERR_TOO_MANY_REDIRECTS» — обычно из-за бесконечного цикла редиректов между HTTP и HTTPS.
    Решение: проверьте, что в wp-config.php правильно выставлен $_SERVER['HTTPS'] = 'on' при проксировании, и что Varnish не меняет протокол.
  • Ошибка: смешанный контент при загрузке ресурсов.
    Решение: проверьте, что все внутренние ссылки в базе данных и настройках WordPress используют https://, можно использовать плагин Clearfy для поиска и исправления дублей и URL.
  • Ошибка: CDN удаляет или не передает заголовок X-Forwarded-Proto.
    Решение: проверьте настройки CDN, включите передачу всех необходимых заголовков прокси.

Практические советы по безопасности и производительности

  • Используйте HSTS заголовки на уровне nginx для принудительного HTTPS.
  • Включите HTTP/2 или HTTP/3 на прокси-сервере для ускорения HTTPS-запросов.
  • Настройте кэширование в Varnish и CDN так, чтобы не кэшировались страницы с пользовательским содержимым (например, корзина WooCommerce).
  • Регулярно проверяйте логи Varnish и прокси на предмет ошибок SSL и редиректов.
  • Используйте плагин Clearfy Pro для оптимизации URL и удаления дублей, чтобы избежать ошибок смешанного контента.

Сравнение вариантов передачи HTTPS инфо в WordPress при использовании Varnish и CDN

МетодНастройкаПлюсыМинусы
$_SERVER['HTTPS'] через HTTP_X_FORWARDED_PROTOКод в wp-config.phpПростая реализация, не требует плагиновЗависит от корректной передачи заголовков прокси
Плагины (например, Really Simple SSL)Автоматическая настройка и редиректыУдобно для начинающихМожет конфликтовать с Varnish, нагрузка на сервер
Настройка SSL на уровне обратного проксиКонфиг nginx/apache + VarnishВысокая производительность и безопасностьСложнее в настройке
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее