wpssl.ru wordpress WPSSL.ru

Как настроить SSL в WordPress при использовании CDN Cloudflare

Использование CDN, такого как Cloudflare, для ускорения загрузки сайта и повышения уровня безопасности — популярная практика среди владельцев WordPress-сайтов. Однако настройка SSL при работе с Cloudflare часто вызывает трудности, особенно из-за особенностей работы прокси-сервера и смешанного контента. В этой статье подробно рассмотрим, как правильно настроить SSL в WordPress при использовании Cloudflare, чтобы избежать распространённых ошибок и обеспечить надежное HTTPS-соединение.

Почему возникают проблемы с SSL при использовании Cloudflare и WordPress

Cloudflare работает как обратный прокси, который принимает запросы пользователей и пересылает их на ваш сервер. При этом SSL-сертификат может быть установлен как на стороне Cloudflare, так и на вашем сервере. В зависимости от выбранного режима шифрования (Flexible, Full или Full (Strict)) возникают разные нюансы:

  • Flexible SSL шифрует трафик между пользователем и Cloudflare, но не между Cloudflare и вашим сервером. Это часто приводит к ошибкам смешанного контента и некорректной работе HTTPS внутри WordPress.
  • Full SSL шифрует трафик полностью, но не проверяет сертификат сервера, что может допускать использование самоподписанных сертификатов.
  • Full SSL (Strict) требует валидного SSL-сертификата на сервере, что обеспечивает максимальную безопасность.

Неверная настройка приводит к ошибкам, таким как "ERR_TOO_MANY_REDIRECTS", смешанному контенту или невозможности корректной работы REST API и AJAX-запросов с HTTPS.

Шаг 1. Правильный выбор режима SSL в Cloudflare

Рекомендуется использовать режим Full (Strict), если на вашем сервере установлен корректный SSL-сертификат. Для этого можно использовать бесплатные сертификаты Let's Encrypt. Такой режим обеспечивает надежное сквозное шифрование.

Если сертификат отсутствует, установите его или временно используйте Full, но избегайте Flexible, так как он приводит к частым проблемам с сайтом на WordPress.

Шаг 2. Настройка WordPress для корректной работы с SSL за Cloudflare

WordPress должен корректно определять, что соединение идет через HTTPS, даже если сервер видит запросы как HTTP (из-за проксирования Cloudflare). Для этого в файле wp-config.php добавьте следующий код:

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

Этот код сообщает WordPress, что соединение защищено, когда Cloudflare пересылает заголовок X-Forwarded-Proto: https. Это важно для генерации правильных URL и предотвращения ошибок смешанного контента.

Шаг 3. Решение проблем смешанного контента

Даже при правильной настройке SSL часто возникают ошибки смешанного контента: когда часть ресурсов загружается по HTTP, а не HTTPS. Для их устранения:

  • Проверьте настройки в базе данных WordPress. В разделе wp_options убедитесь, что значения siteurl и home начинаются с https://.
  • Используйте плагин Clearfy Pro для автоматической замены HTTP на HTTPS в контенте и исправления ссылок.
  • Добавьте в файл .htaccess следующие правила для принудительного HTTPS (если не настроено на уровне сервера):
# Перенаправление на HTTPS
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Обратите внимание, что стандартные правила перенаправления могут вызывать циклы при проксировании, поэтому используем проверку заголовка X-Forwarded-Proto.

Шаг 4. Настройка заголовков безопасности и HSTS

Cloudflare позволяет настраивать заголовки безопасности, но часть из них можно и нужно задавать на стороне WordPress или сервера. Например, добавьте в functions.php вашей темы следующий код для отправки заголовка HSTS:

function wpssl_add_hsts_header() {
    header('Strict-Transport-Security: max-age=31536000; includeSubDomains; preload');
}
add_action('send_headers', 'wpssl_add_hsts_header');

HSTS заставляет браузеры всегда использовать HTTPS для вашего домена, что повышает безопасность. Однако перед активацией убедитесь, что HTTPS работает корректно на всем сайте.

Шаг 5. Настройка SSL для AJAX и REST API в WordPress с Cloudflare

AJAX-запросы и REST API требуют корректной работы SSL, так как браузеры блокируют смешанный контент и незащищённые вызовы. Для решения проблем:

  • Убедитесь, что в JavaScript используется правильный протокол в URL, например, используйте относительные ссылки или wp_localize_script для передачи URL с HTTPS.
  • В PHP, при создании REST API или AJAX-обработчиков, учитывайте код из Шага 2 для правильного определения HTTPS.
  • Если возникают ошибки CORS, настройте заголовки на сервере и в Cloudflare, разрешив необходимые домены.

Пример: Включение HTTPS для AJAX-запросов в теме WordPress

function wpssl_enqueue_scripts() {
    wp_enqueue_script('my-ajax-script', get_template_directory_uri() . '/js/ajax.js', array('jquery'), null, true);
    wp_localize_script('my-ajax-script', 'wpssl_ajax_object', array(
        'ajax_url' => admin_url('admin-ajax.php', 'https'),
        'nonce'    => wp_create_nonce('wpssl_nonce')
    ));
}
add_action('wp_enqueue_scripts', 'wpssl_enqueue_scripts');

В JavaScript используйте wpssl_ajax_object.ajax_url для всех AJAX вызовов, чтобы гарантировать HTTPS.

Шаг 6. Полезные плагины для работы с SSL и Cloudflare в WordPress

  • Clearfy Pro — автоматическая оптимизация и исправление смешанного контента, настройка HTTPS.
  • Cloudflare — официальный плагин для интеграции с Cloudflare, позволяет очистить кеш и настроить некоторые параметры.
  • Really Simple SSL — упрощает переход на HTTPS, автоматизирует большинство настроек.

Использование этих плагинов поможет минимизировать ручную работу и избежать типичных ошибок.

Выводы и рекомендации

Настройка SSL при использовании Cloudflare и WordPress требует внимания к деталям — правильный режим шифрования, корректная работа с заголовками, устранение смешанного контента и настройка AJAX/REST API. Следуя описанным шагам, вы сможете обеспечить стабильную и безопасную работу сайта с HTTPS и CDN.

Подробнее о плагине Clearfy Pro и других инструментах вы можете узнать на wpshop.ru.

×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙