Cloudflare является лидером в области доставки контента , снижая нагрузку и ускоряя миллионы веб-сайтов.
Особенностью этого провайдера является то, что он не начинался как инструмент ускорения / повышения производительности, а был рожден от Project Honeypot , который задумывался как служба защиты от спама и взлома. На сегодняшний день это одно из главных преимуществ Cloudflare: обнаружение и защита от DDoS-атак. Их алгоритмы учитывают IP-адреса посетителей, полезную нагрузку, запрашиваемые ресурсы и частоту запросов для обнаружения злонамеренных посетителей.
Поскольку Cloudflare является прокси-сервером между веб-сайтами и всем входящим трафиком, он способен значительно снизить нагрузку на серверы, настолько, что DDoS-атаки не доходят даже до исходных веб-сайтов, как объясняется в этом введении . Cloudflare также предоставляет опцию Always Online, которая кэширует версию веб-сайта пользователя и предоставляет ее ограниченную версию в случае сбоя исходного сервера — когда исходный веб-сайт возвращает ошибки 5xx или 4xx. Также имеется полноценный кеш страниц.
Эти функции могут быть огромным преимуществом: они могут спасти работающий веб-сервер при большой нагрузке, а в случае серверных ошибок могут дать разработчикам некоторое пространство для понимания.
Это также доступно бесплатно. Конечно, существуют премиальные уровни, и есть вещи (например, правила для дополнительных страниц), которые требуют оплаты, но объем одного только бесплатного уровня Cloudflare делает целесообразным изучение его входов и выходов.
Сравнительные тесты ставят Cloudflare где-то посередине в отношении скорости, но было бы трудно утверждать, что это лучшая CDN на рынке.
Настройка Cloudflare
Создание сайта с Cloudflare очень просто. После регистрации на (cloudflare.com) [http://www.cloudflare.com] мы можем добавить новый веб-сайт. Пока система сканирует IP-адрес данного домена и другие подробности, нам предлагается вводное видео. После завершения мы получили новые серверы имен для настройки с нашим регистратором.
Нам нужно зарегистрировать эти серверы имен у нашего регистратора и дождаться распространения изменений в Интернете. Это может занять до 24 часов.
Это изменение означает передачу контроля над нашим доменом Cloudflare. Это также означает, что если у нас есть электронная почта в этом домене (записи MX), нам необходимо перенести эти записи в Cloudflare. Если у нас есть какие-либо субдомены, их также необходимо настроить как соответствующие записи A на информационной панели Cloudflare.
Все существующие доменные записи, настроенные нашим регистратором доменов или хостинг-провайдером, необходимо переместить / скопировать в Cloudflare.
Некоторые провайдеры управляемого хостинга могут еще больше упростить / автоматизировать этот процесс перехода.
Для каждой записи нашего домена мы можем просто разрешить пропускать весь трафик непосредственно на наши серверы — это означает, что мы можем устанавливать исключения для определенных поддоменов — или мы можем отключить все функции Cloudflare — например, пока мы делаем некоторые изменения на сайте.
Как только мы настроим домен, это в основном вся работа, необходимая вне панели мониторинга Cloudflare. Больше ничего не нужно делать на самом сайте или на исходном сервере. Все дальнейшие настройки выполняются на сайте Cloudflare.
Настройка шифрования
Сертификат SSL является частью бесплатного плана Cloudflare. Существует четыре варианта настройки SSL, и мы можем найти их на вкладке Crypto на панели инструментов.
- ВЫКЛ — это само за себя. Весь трафик будет перенаправлен на незащищенный протокол (http)
- ГИБКОСТЬ — независимо от протокола нашего сервера и от того, есть ли у нас существующий SSL-сертификат или нет, Cloudflare будет обслуживать все наши страницы для конечных посетителей через https . Соединения от Cloudflare к исходному серверу будут проходить через незащищенное соединение.
- ПОЛНЫЙ — Cloudflare будет связываться с вашим сервером через https, но не будет проверять сертификаты о происхождении. Трафик из Cloudflare для посетителей обслуживается через https.
- ПОЛНАЯ СТРОКА — Cloudflare потребует действительные (не самозаверяющие) SSL-сертификаты на исходном сервере. Трафик из Cloudflare для посетителей обслуживается через https.
С этими настройками мы должны убедиться, что настройка имеет смысл, потому что у нас есть два уровня между нашими конечными пользователями и содержимым нашего сервера, поэтому пропуски здесь могут привести к петле перенаправления или слишком большому количеству перенаправлений, которые могут привести к замедлению работы сайта.
Cloudflare также предлагает возможность приобрести собственный сертификат, а для премиум-пользователей, которым требуется дополнительная безопасность или забота о своем имидже на рынке, он предоставляет возможность загрузки пользовательских / премиальных сертификатов. Это часть премиальных планов.
Защита сайта
Это одна из областей, где Cloudflare сияет: он дает беспрецедентную ценность бесплатно. В условиях хостинга защита от DDoS — это услуга премиум-класса, которая предоставляется не всегда даже для платящих клиентов.
Cloudflare предлагает бесплатную защиту от DDoS на бесплатном уровне вместе с некоторыми другими, довольно сложными инструментами, которые защищают веб-сайты на уровне инфраструктуры, прежде чем вредоносный трафик даже достигнет его. Предлагает ограничение скорости — ограничение посещений
в соответствии с определенными пользователем, настраиваемыми правилами. Он предлагает интеллектуальные правила брандмауэра, блоки стран, проверки целостности браузера, защиту с помощью капчи и многое другое.
Сегодня, когда бот-сети управляют Интернетом, а недавно установленные веб-сайты или серверы иногда тонут в попытках взлома методом «грубой силы» в течение нескольких минут после выхода в Интернет, когда спаммеры автоматизируют веб-комментарии, а спам-реферер процветает даже без каких-либо взломов, POST-атаки и медленные атаки с использованием неортодоксальных средств не редкость. Этот вид защиты может создавать или разрушать веб-сайты малого или среднего размера.
Существует также защита от сбоев, запрет определенных ресурсов для определенных профилей посетителей или запутывание электронных писем.
Премиум уровни предлагают еще больше возможностей.
Скорость и производительность
По умолчанию с Cloudflare мы получаем кеширование статического контента — JavaScript, шрифтов, таблиц стилей и даже изображений. Мы можем установить правила для срока действия кэша. Для различных систем CMS существуют плагины, которые могут подключаться к Cloudflare, чтобы мы могли очистить кэш с нашего веб-сайта.
Эти статические ресурсы «перенимаются» при настройке DNS инфраструктурой Cloudflare, а затем обслуживаются из сети центров обработки данных по всему миру, в зависимости от местоположения посетителя.
Ресурсы могут быть кэшированы (или извлечены из источника) в зависимости от строк запроса или заголовков кэша, установленных нашим сервером происхождения. Например, в PHP мы можем установить срок действия кэша следующим образом:
header('Cache-Control: max-age=3600');
Если этого недостаточно, нам может потребоваться удалить заголовки Pragma , Expires и Cache Control :
header_remove('Pragma');
header_remove('Expires');
header_remove('Cache-Control');
Мы также можем сделать это на уровне сервера. В nginx мы установили бы эти правила в блоке / файле виртуального хоста:
if ($http_cookie ~* "some-cookie") {
#removing headers that stop Cloudflare cloudflare from caching
more_clear_headers 'Pragma';
more_clear_headers 'Expires';
more_clear_headers 'Cache-Control';
add_header Cache-Control "no-cache, no-store, max-age=0";
}
location ~* "(!?.*some-url-path.*)" {
#removing headers that stop Cloudflare cloudflare from caching
more_clear_headers 'Pragma';
more_clear_headers 'Expires';
more_clear_headers 'Cache-Control';
add_header Cache-Control "max-age=3600";
}
Пользователи Apache помещают что-то вроде этого в свой файл .htaccess
<IfModule mod_headers.c>
Header unset Pragma env=LONGCACHE
Header unset Expires env=LONGCACHE
Header set Cache-Control "max-age=3600" env=LONGCACHE
</IfModule>
Очевидно, что some-cookie и some-url-path выше необходимо заменить правильными значениями. Эти правила также необходимы для кэширования страниц, упомянутых ниже.
Мы можем уменьшить наши CSS, JS и HTML. Существует возможность использовать AMP для исходящих AMP-ссылок. Есть также бета-версия Rocket Loader, которая связывает и обслуживает JS асинхронно, используя локальное хранилище браузера для его кеширования. Будьте осторожны с этим, потому что небольшие ошибки в порядке загрузки ресурсов могут сломать ваш сайт.
Платящим клиентам доступна функция Railgun, которая решает главную проблему систем кэширования — динамический контент. Он пытается ускорить динамическую доставку контента с исходного сервера. Он требует установки программного обеспечения на исходном сервере и работает через сжатие доставленного контента и « поддержание единого постоянного соединения для нескольких одновременных запросов, устраняя задержку сетевого соединения ». Это напоминает функцию мультиплексирования протокола HTTP / 2 — только здесь, между сервером происхождения и Cloudflare.
Также есть сжатие / оптимизация изображений для плана Pro, в польских и миражных механизмах. На вкладке Traffic есть оптимизация маршрутов Argo через центры обработки данных Cloudflare по всему миру, а также варианты распределения нагрузки.
Полностраничное HTML-кэширование
Полностраничное кэширование означает кэширование всей продукции нашей системы — CMS, приложения, системы блогов или чего-либо еще.
В разделе « Правила страницы» есть скрытая жемчужина, которая может превратить вашу учетную запись Cloudflare в полноценную систему кэширования, которая может конкурировать с профессиональными решениями, такими как Varnish, и — благодаря центрам обработки данных по всему миру — возможно, превзойти ее.
Правило уровня кэширования, установленное на Кэшировать все, будет кэшировать все HTML-содержимое веб-сайта вместе со всеми другими ресурсами.
Заказывая эти правила, мы можем создавать сложные решения для кэширования / исключения и предоставлять даже динамически генерируемый контент с минимальной задержкой. 15-кратные улучшения в времени до первого байта ( TTFB ) не являются неслыханными .
Эти правила поддерживают символы подстановки и должны быть упорядочены по приоритету:
*some-website.com/static/*
[/static/ subdirectory for static HTML pages]
*some-website.com/*.shtml
[.shtml file extension to signify HTML that is static]
*some-website.com/*?*static=true*
[adding static=true query parameter]
Если мы объединяем это правило с настройкой обхода, как показано на следующем рисунке, мы можем выделить разделы нашего веб-сайта, которые необходимо кэшировать / исключать из кэша при различных условиях — например, разделы администратора и т. Д.
Если кеш страниц работает, мы должны увидеть CF-Cache-Status: HIT среди наших заголовков ответов в инспекторе браузера.
У платящих клиентов есть дополнительные опции кеширования или обхода кеша в зависимости от куки. Здесь имена файлов cookie могут быть установлены с подстановочными знаками, а содержимое также может быть кэшировано в зависимости от типа устройства.
Эти правила более сложны и не нужны для каждого типа веб-сайтов. Для бесплатных клиентов доступно три правила страницы, но можно приобрести и дополнительные.
HTTP / 2 и проталкивание сервера
Браузерный инспектор показывает параллельную асинхронную загрузку ресурсов по протоколу HTTP / 2
По умолчанию бесплатные и корпоративные клиенты включают HTTP / 2 — большое улучшение по сравнению с протоколом HTTP / 1.1 — который включает в себя:
- мультиплексирование — несколько ресурсов могут быть отправлены в пределах одного соединения асинхронным способом
- сжатие заголовка
- push-сервер — сервер предсказывает запросы ресурсов и отправляет их еще до того, как браузер их запросит.
Признавая необходимость оценивать улучшения и ценность Cloudflare для каждого отдельного случая, справедливо сказать, что в целом ценность, которую обеспечивает Cloudflare (особенно ее бесплатный уровень), существенно превышает среднюю.
Вывод
В этой статье рассказывается, как использовать и настроить Cloudflare на веб-сайте, чтобы сделать его быстрым, надежным и защищенным от DDoS-атак. Это не значит, что сайт CDNed непроницаем. Фактически, это приносит новые уязвимости к столу.
Когда из-за человеческих ошибок в 2016 году в случае шведского провайдера сети Telia пострадали службы Cloudflare, это стало серьезной проблемой для европейского интернета. Подсчитано, что сервисами Cloudflare пользуются 6,2 процента из 1 миллиона крупнейших в мире веб-сайтов.
Инфографика из посмертного отчета Cloudflare о сбое в работе Telia, когда неправильно настроенный маршрутизатор перенаправил большую часть трафика европейской сети в Азию, что привело к потере пакетов.
Несмотря на это, мы не должны бояться CDN из-за подобных инцидентов. Их немного и они находятся далеко друг от друга и в конечном итоге способствуют созданию значительно более надежной сети.