WordPress в Azure

Служба приложений Azure
Azure Front Door
Служба Azure Kubernetes (AKS)
Брандмауэр веб-приложения Azure
Приватный канал Azure

WordPress — это универсальная и популярная система управления содержимым, которая используется для создания веб-сайтов всех размеров для нескольких целей. От небольших личных блогов до крупномасштабных корпоративных сайтов и магазинов электронной коммерции, WordPress предлагает ряд функций и настроек в соответствии с различными потребностями. Однако из-за различных размеров и вариантов использования своих установок WordPress также имеет уникальные требования к размещению, которые зависят от таких факторов, как объем трафика и потребности в хранилище.

В этой статье рассматриваются развертывания WordPress в Azure. В нем содержатся рекомендации о том, что следует рассмотреть и реализовать для обеспечения безопасной, масштабируемой и экономичной установки.

Общие советы по безопасности и производительности WordPress

Из-за своей подавляющей популярности, WordPress является мишенью для хакеров. Веб-сайты, которые работают на платформе, могут быть уязвимы для угроз безопасности, таких как вредоносные программы и фишинговые атаки. Следующие советы помогут устранить эти риски, создав более безопасную и эффективную установку WordPress.

Эти советы применимы независимо от того, используете ли вы виртуальную машину или Служба приложений Azure для архитектуры размещения или какое-либо другое решение.

Использование azure Брандмауэр веб-приложений

Брандмауэр веб-приложений помогает защитить веб-сайт от распространенных веб-атак. Он действует как фильтр между вашим веб-сайтом и Интернетом. В этом качестве Брандмауэр веб-приложений отслеживает входящий трафик и блокирует вредоносные запросы, которые могут использовать уязвимости в коде веб-сайта. Брандмауэр веб-приложений помогает защитить веб-сайт от различных атак, включая внедрение кода SQL, межсайтовые скрипты (XSS) и подделку межсайтовых запросов (CSRF).

Для централизованной защиты веб-приложений следует использовать Брандмауэр веб-приложений в Azure Front Door. Azure Front Door — это сеть доставки содержимого, которая помогает предоставлять пользователям по всему миру быстрый, надежный и безопасный доступ к статическому и динамическому веб-содержимому ваших приложений. Развертывание Брандмауэр веб-приложений в Azure Front Door помогает защитить веб-службы от распространенных эксплойтов и уязвимостей.

Удаление неиспользуемых подключаемых модулей и тем

Необходимо удалить неиспользуемые подключаемые модули и темы из установки WordPress. Этот шаг важен для обеспечения безопасности веб-сайта WordPress и оптимизации его производительности. Даже подключаемый модуль или тема, которые вы не используете активно, могут представлять угрозу безопасности, предоставляя хакерам точку входа для использования уязвимостей в устаревшем или неуправляемом коде. Кроме того, наличие большого количества подключаемых модулей и тем, установленных на веб-сайте, может замедлить его производительность за счет увеличения времени загрузки и использования ресурсов сервера.

Разгрузка статического содержимого от процессора PHP

Чтобы снизить нагрузку на процессор PHP, следует разгрузить статическое содержимое, например изображения, видео и CSS-файлы. Разгрузка статического содержимого помогает оптимизировать производительность веб-сайта и снизить нагрузку на сервер. Когда пользователь посещает веб-сайт, сервер обрабатывает код PHP и динамически создает HTML-содержимое. Этот процесс потребляет много ресурсов. Однако статическое содержимое меняется редко, поэтому вы можете обслуживать статическое содержимое непосредственно из файловой системы сервера или сети доставки содержимого. Разгрузив эти ресурсы, вы можете уменьшить нагрузку на ЦП и ОЗУ сервера. Такая конфигурация позволяет сократить время загрузки страницы, повысить производительность веб-сайта и улучшить взаимодействие с пользователем.

Есть также другие преимущества обслуживания статических ресурсов из сетевой службы доставки содержимого, например Azure Front Door. Например, при разгрузке статического содержимого можно уменьшить задержку и увеличить скорость веб-сайта, разместив серверы близко к географическим расположениям пользователей.

Примечание

Чтобы защитить источник с помощью Azure Front Door с помощью частной конечной точки, необходимо использовать номер SKU уровня "Премиум" Azure Front Door. Дополнительные сведения см. в статье Защита источника с помощью Приватный канал.

Недействительность сетевого кэша доставки содержимого

Для крупных установок WordPress, использующих сеть доставки содержимого, например Azure Front Door или Сеть доставки содержимого Azure, необходимо реализовать логику недействительности кэша. При возникновении нового события необходимо сделать недействительным кэш в сети доставки содержимого для затронутой страницы. Примеры событий включают публикацию новой статьи, обновление существующей страницы и добавление комментария. Логика недействительности должна найти все URL-адреса, на которые влияет изменение. В частности, логике необходимо найти и сделать недействительными динамически создаваемые страницы, такие как категории и архивы, в кэше сети доставки содержимого. При использовании некоторых установленных тем и подключаемых модулей даже незначительное изменение может повлиять на каждую страницу.

Простой способ реализовать логику обнаружения — использовать подключаемый модуль, который позволяет вручную активировать недействительность кэша для всех URL-адресов. Но одновременное аннулирование всех URL-адресов может привести к резкому увеличению трафика на сайте WordPress. Пример логики недействительности кэша для сети доставки содержимого см. в статье Очистка кэша Azure и развертывание реализации перехватчика на сайте GitHub.

Включение двухфакторной проверки подлинности

Двухфакторная проверка подлинности повышает безопасность установки и помогает защитить учетные записи администратора от несанкционированного доступа и атак. Чтобы воспользоваться преимуществами двухфакторной проверки подлинности, можно использовать подключаемый модуль, например подключаемый модуль проверки подлинности miniOrange. Помимо прочего, этот подключаемый модуль позволяет настроить Microsoft Authenticator в качестве двухфакторного метода проверки подлинности для пользователей, которые входят на ваш сайт WordPress в качестве администраторов.

Отключение доступа XML-RPC

XML-RPC — это удаленный протокол, который позволяет сторонним приложениям взаимодействовать с сервером веб-сайта. Однако этот протокол также является распространенной целью для хакеров, которые используют его для запуска атак методом подбора или использования уязвимостей в вашей системе управления содержимым. Если вы используете Azure Front Door, вы можете отключить XML-RPC, настроив правило запрета для URL-адресов в формате /xmlrpc.php.

Ограничение доступа к панели администрирования

По умолчанию панель администрирования WordPress доступна всем пользователям с учетными данными вашей учетной записи и правильным URL-адресом в формате /wp-login.php или /wp-admin. В результате хакеры и другие злоумышленники могут попытаться угадать ваши учетные данные, выполнить перехват сеанса, запустить атаки методом подбора или воспользоваться уязвимостями в WordPress, чтобы получить доступ.

Брандмауэр веб-приложений может помочь предотвратить некоторые атаки, но многие администраторы предпочитают ограничивать доступ к панели администрирования WordPress на уровне сети.

Например, вы можете заблокировать доступ к частным URL-адресам в Azure Front Door. Затем можно использовать Шлюз приложений Azure для предоставления внутреннего доступа из частной сети, использующего звездообразную топологию. Внутренние экземпляры Шлюз приложений поддерживают правила Брандмауэр веб-приложений и правила Azure Front Door. Эти правила помогают защитить установку WordPress от внутренних атак. Если вы можете смириться с риском внутренней атаки, вместо Шлюз приложений можно использовать внутренний экземпляр Azure Load Balancer. Load Balancer работает на четвертом уровне модели взаимодействия открытых систем (OSI).

Схема архитектуры, показывающая заблокированный общий доступ к панели администрирования WordPress. VPN в звездообразной топологии обеспечивает внутренний доступ.

Скачайте файл Visio этой архитектуры.

Некоторые подключаемые модули WordPress требуют, чтобы URL-адреса в формате /wp-admin/admin-ajax.php были общедоступными и удалены из этого правила запрета.

Хранение секретов в Azure Key Vault

Чтобы обеспечить безопасность развертываний WordPress в Azure, рекомендуется хранить секреты, такие как пароли баз данных, TLS или SSL-сертификаты, в Key Vault. Эта облачная служба помогает обеспечить безопасное хранение криптографических ключей, сертификатов и секретов и управление ими.

Key Vault помогает авторизованным приложениям и службам безопасно получать доступ к секретам. Вам не нужно хранить их в виде обычного текста в образе контейнера WordPress или в коде приложения.

Настройка производительности

Чтобы оптимизировать производительность WordPress, необходимо настроить различные параметры и использовать подключаемые модули. Следующие подключаемые модули могут быть полезны для отладки установок WordPress:

  • Монитор запросов предоставляет разбивку времени, затрачиваемого на каждый SQL-запрос и другие действия. Например, ошибки PHP, перехватчики и действия, блоки редактора блоков, сценарии и таблицы стилей в очереди, а также вызовы API HTTP.
  • Laps содержит разбивку времени, затрачиваемого на загрузку страниц WordPress.

Проблемы размещения WordPress

В архитектуре приложений WordPress существует несколько проблем размещения, в том числе:

  • Масштабируемость. Архитектура размещения должна иметь возможность горизонтального масштабирования во время пиковых периодов трафика.
  • Хранилище ReadWriteMany (RWX). По умолчанию WordPress сохраняет все статические ресурсы, подключаемые модули и исходный код темы в каталоге /wp-content/ . Во время горизонтального увеличения масштаба все узлы должны иметь возможность считывания данных из этого каталога и записи в него.
  • Класс хранения операций ввода-вывода в секунду (IOPS). WordPress состоит из более чем 1000 небольших PHP-файлов, которые процессор PHP ссылается, загружает и запускает во время входящих запросов. При использовании некоторых протоколов загрузка большого количества небольших файлов может увеличить затраты. Общая производительность будет медленнее, чем загрузка одного файла с тем же общим размером. В результате решение хранилища должно поддерживать высокий уровень операций ввода-вывода в секунду.
  • Недействительность кэша. При наличии нового действия в приложении, например при публикации новой статьи, необходимо сделать кэш недействительным на всех узлах.
  • Время создания кэша. Для первого пользователя данного узла время отклика может быть медленным, пока не будет создан кэш.

Варианты размещения WordPress в Azure

WordPress может работать на Служба приложений, Служба Azure Kubernetes (AKS) и azure Виртуальные машины. Размер установки является важным фактором в выбранном узле. Для небольших и средних установок Служба приложений является экономичным вариантом. Однако для крупных установок следует рассмотреть возможность размещения AKS или виртуальных машин.

WordPress в Службе приложений

Корпорация Майкрософт предоставляет полностью управляемое решение для запуска WordPress на Служба приложений в Linux виртуальных машинах. Дополнительные сведения см. в статье Создание сайта WordPress. Это решение:

  • Предназначен для быстрого и простого развертывания установки WordPress.
  • Идеально подходит для небольших и средних установок WordPress.
  • Обеспечивает масштабируемость, надежность и безопасность платформы Azure без сложной настройки или управления.
  • Выполняет автоматическое обновление, резервное копирование и мониторинг, чтобы обеспечить постоянную доступность сайта.

Дополнительные сведения см. в статье WordPress на Служба приложений.

Рабочие нагрузки с интенсивным использованием хранилища

Большие установки WordPress могут быть ресурсоемкими. В этих сценариях следует использовать решение для хранения данных с высоким уровнем операций ввода-вывода в секунду и низкой задержкой. Мы рекомендуем Azure NetApp Files. Azure NetApp Files может поддерживать развертывания WordPress с большим объемом хранилища. Он также предоставляет дополнительные функции, такие как защита данных, резервное копирование и восстановление, репликация между регионами и аварийное восстановление.

Для развертывания контейнера WordPress следует использовать AKS. В Azure NetApp Files реализуйте хранилище с помощью драйвера CSI Kubernetes. Azure NetApp Files предлагает ReadWriteMany режим, позволяющий всем узлам выполнять чтение и запись в одном хранилище. Дополнительные сведения см. в статье Архитектура AKS WordPress.

Для крупной установки WordPress, работающей на виртуальных машинах, необходимо подключить Azure NetApp Files по протоколу NFS. Дополнительные сведения см. в статье WordPress на виртуальных машинах.

Неизменяемый контейнер WordPress

Альтернативным подходом к традиционным методам размещения является развертывание WordPress в неизменяемом контейнере. Такой подход имеет преимущества и недостатки. Исходный код и все ресурсы в неизменяемых контейнерах являются фиксированными и не могут быть изменены после развертывания. Необходимо внести все изменения, включая установку новых подключаемых модулей или обновление ядра WordPress, в новой версии образа контейнера. Хотя этот подход помогает обеспечить согласованность и упрощает откат, для внесения изменений необходимо создать конвейер развертывания. Кроме того, неизменяемые контейнеры могут быть ограничены возможностями постоянного хранения, которые они предлагают. Может потребоваться разработать решение для обработки файлов мультимедиа и других данных. Несмотря на эти ограничения, неизменяемые развертывания контейнеров предоставляют преимущества с точки зрения безопасности, масштабируемости и переносимости.

Вы можете развернуть неизменяемую контейнерную версию WordPress на различных платформах, включая Приложения-контейнеры Azure, AKS и Служба приложений с помощью пользовательского образа контейнера. Образ контейнера можно разместить в Реестр контейнеров Azure.

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально она была написана следующими участниками.

Основной автор:

Другие участники:

  • Адриан Калинеску | Старший архитектор облачных решений

Чтобы просмотреть непублишные профили LinkedIn, войдите в LinkedIn.

Дальнейшие действия

Документация по продуктам:

Обучающие модули: