Оптимизация производительности с помощью правил CDN
Используйте механизм правил для перенаправления HTTP на HTTPS, добавления заголовков безопасности и геофильтрации, ограничивающей доступ к содержимому из определенных стран.
«Оптимизация производительности с помощью правил CDN» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Зачем нужен обработчик правил
Обработчик правил Azure Front Door (в Standard/Premium он называется наборами правил) позволяет перехватывать и изменять HTTP-запросы и ответы на периферийном PoP до их кэширования или пересылки к источнику. Без обработчика правил такие задачи, как перенаправление HTTP на HTTPS, добавление заголовков безопасности к ответам и геоблокировка, выполнялись бы в коде приложения на источнике, что увеличивало бы задержку и связывало вопросы безопасности с бизнес-логикой. Правила на периферии выполняются быстрее и снижают нагрузку на источник.
Перенаправление с HTTP на HTTPS
Один из наиболее распространенных вариантов использования обработчика правил — принудительное применение HTTPS. Когда клиент запрашивает Ваш сайт по HTTP, правило перенаправления на периферии Front Door немедленно возвращает ответ 301 Moved Permanently (или 302 Found) с указанием URL-адреса HTTPS, не передавая запрос источнику. Это быстрее перенаправлений на стороне источника и гарантирует шифрование всего трафика при передаче. Настройте это как действие перенаправления для запросов, в которых условие RequestScheme равно HTTP.
// Rules engine rule — redirect HTTP to HTTPS
// Match condition: RequestScheme Equals HTTP
// Action: URL Redirect
// Redirect type: Moved (301)
// Destination protocol: HTTPS
// Destination host: {http.request.host}
// Destination path: {http.request.uri.path}
// Query string: {http.request.uri.querystring}Добавление заголовков безопасности к ответам
Современные браузеры поддерживают заголовки безопасности HTTP, предотвращающие распространенные атаки. Вы можете добавлять эти заголовки ко всем ответам с помощью действий обработчика правил Append response header, не изменяя сервер источника. К основным заголовкам относятся: Strict-Transport-Security (принудительно использует HTTPS в течение заданного периода), X-Content-Type-Options: nosniff (предотвращает определение типа MIME по содержимому), X-Frame-Options: DENY (предотвращает кликджекинг) и Content-Security-Policy (ограничивает источники содержимого). Добавление этих заголовков на периферии обеспечивает единообразное применение для всех источников.
// Rules engine — add security headers to all responses
// Action 1: Append response header
// Header name: Strict-Transport-Security
// Value: max-age=31536000; includeSubDomains
// Action 2: Append response header
// Header name: X-Content-Type-Options
// Value: nosniff
// Action 3: Append response header
// Header name: X-Frame-Options
// Value: DENYПереопределение параметров кэша для каждого правила
Обработчик правил позволяет переопределять TTL кэша по умолчанию для определенных шаблонов URL. Например, можно кэшировать /static/images/* в течение 30 дней, а ответы /api/* — всего 60 секунд. Используйте условие сопоставления для RequestUri и действие Route configuration override, задающее пользовательскую продолжительность кэширования. Это обеспечивает точный контроль поведения кэша без создания отдельных маршрутов для каждого типа содержимого.
// Rules engine — cache API responses for 60 seconds
// Match condition: RequestUri BeginsWith /api/
// Action: Route configuration override
// Cache: Enabled
// Caching duration: 0 days, 0 hours, 1 minute
// Query string caching: Include All
// Rules engine — cache static images for 30 days
// Match condition: RequestUri BeginsWith /static/images/
// Action: Route configuration override
// Cache: Enabled
// Caching duration: 30 daysПерезапись URL на периферии
Действия перезаписи URL изменяют URL запроса перед его пересылкой к источнику, не меняя URL, который видит клиент. Это удобно, когда запросы нужно отправлять из одной структуры URL по другому пути серверной части. Например, можно переписать /products/item/{id} в /catalog/v2/products/{id}, чтобы учесть изменения API серверной части без обновления ссылок у клиентов. Перезапись URL — это действие обработчика правил, изменяющее URL path с помощью замены строк или групп захвата.
Правила геофильтрации
Геофильтрация на уровне обработчика правил позволяет перенаправлять или блокировать пользователей из определенных стран на основе геолокации, полученной по IP-адресу клиента. В отличие от геофильтрации CDN, которая возвращает 403, геофильтрация обработчика правил предоставляет больше возможностей: заблокированные страны можно перенаправить на целевую страницу с объяснением региональной доступности или направить пользователей из определенных стран в группы источников для соответствующего региона (например, пользователей из EU — к источникам EU для соблюдения GDPR). Геосопоставление RemoteAddress использует базу данных преобразования IP-адресов в страны MaxMind.
Изменение заголовков запроса
Обработчик правил может добавлять, перезаписывать или удалять заголовки запроса перед его пересылкой к источнику. Распространенный вариант использования — добавление X-Forwarded-For или пользовательского заголовка, например X-Front-Door-Id, чтобы источник знал, что запросы поступили через Front Door, и мог проверить их. Также можно удалить исходный заголовок Host и заменить его именем узла источника — это важно, если источник проверяет заголовок Host. Это дает полный контроль над тем, что видит сервер источника.
Маршрутизация на основе заголовков запроса
Условия обработчика правил могут сопоставляться со значениями заголовков запроса, что позволяет реализовать сложную логику маршрутизации. Например, запросы с заголовком X-API-Version: 2 можно направить в другую группу источников, где работает API версии 2, а запросы без этого заголовка — к источнику версии 1. Это позволяет реализовать синхронное переключение версий API на периферии без отдельных имен узлов для каждой версии API. Маршрутизация на основе заголовков также используется для A/B-тестирования: направление выполняется на основе cookie с пользовательским сегментом.
Сжатие ответов на периферии
Сжатие ответов в Front Door сжимает текстовые ответы (HTML, CSS, JavaScript, JSON) с помощью gzip или Brotli перед их выдачей из PoPs. Сжатие особенно эффективно для крупных пакетов JS и может уменьшить объем передаваемых данных до 70%. Включите сжатие в параметрах маршрута и укажите типы MIME, которые нужно сжимать. Сжатое содержимое кэшируется в сжатом виде на PoP, поэтому только первый запрос каждого ресурса запускает сжатие, а последующие мгновенно получают кэшированный сжатый файл.
Защита источника
Origin Shield — это дополнительный необязательный уровень кэширования, который Front Door размещает между периферийными узлами PoP и источником. Если этот уровень включен, более 100 периферийных PoPs не запрашивают некэшированное содержимое у источника независимо друг от друга, а передают промахи кэша одному региональному PoP защиты источника, который затем обращается к источнику. Это значительно уменьшает количество запросов к источнику (так называемый коэффициент разгрузки источника), сохраняя при этом глобальную выдачу содержимого с периферийных PoPs.
Тестирование правил с помощью Front Door Explorer
Перед развертыванием изменений обработчика правил в рабочей среде проверьте их с помощью средств диагностики и тестирования на портале. В области Параметры диагностики журналы WAF в режиме обнаружения показывают, каким правилам соответствуют запросы. Для обработчика правил также можно после развертывания в промежуточной среде просмотреть фактические заголовки запросов и ответов в инструментах разработчика браузера или использовать curl -v, чтобы отправить определенные запросы и убедиться, что заголовки ответа и поведение перенаправлений соответствуют ожиданиям, прежде чем переключаться на рабочую среду.
# Test HTTP-to-HTTPS redirect at the CDN/Front Door edge
curl -v -L http://myapp.azurefd.net/ 2>&1 | grep -E '< (HTTP|Location)'
# Expected output:
# < HTTP/1.1 301 Moved Permanently
# < Location: https://myapp.azurefd.net/Быстрая проверка
Проверьте, насколько хорошо Вы поняли рассмотренные в этом уроке концепции Microsoft Azure Fundamentals (AZ-900).
Итоги урока
В этом уроке Вы узнали, что обработчик правил Front Door выполняет перенаправления с HTTP на HTTPS, добавляет заголовки безопасности к ответам и переопределяет TTL кэша на периферии без изменений в источнике; перезапись URL незаметно изменяет пути запросов, пересылаемых к источнику, тогда как перенаправление URL меняет URL, отображаемый клиенту; а Origin Shield снижает нагрузку на источник, объединяя запросы при промахах кэша через региональный узел защиты. Далее мы рассмотрим Azure AI Services для добавления интеллектуальных возможностей в приложения.
Часто задаваемые вопросы
Урок «Оптимизация производительности с помощью правил CDN» бесплатный?
Да — полный текст урока «Оптимизация производительности с помощью правил CDN» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Оптимизация производительности с помощью правил CDN»?
Используйте механизм правил для перенаправления HTTP на HTTPS, добавления заголовков безопасности и геофильтрации, ограничивающей доступ к содержимому из определенных стран. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Оптимизация производительности с помощью правил CDN»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Профили и конечные точки Azure CDN
- Azure Front Door: глобальная балансировка нагрузки
- Брандмауэр веб-приложений в Front Door
- Оптимизация производительности с помощью правил CDN