你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 上的 WordPress

Azure 应用服务
Azure Front Door
Azure Kubernetes 服务 (AKS)
Azure Web 应用程序防火墙
Azure 专用链接

WordPress 是一种通用且常用的内容管理系统,用于创建各种规模的网站,可以实现诸多用途。 从小型个人博客到大型公司站点和电子商务商店,WordPress 提供了一系列功能和自定义来满足不同的需求。 但是,由于其安装的大小和用例不同,WordPress 还有独特的托管要求,具体取决于流量和存储需求等因素。

本文介绍 Azure 上的 WordPress 部署。 它提供考量事项和实施内容方面的指导,以帮助确保安装安全、可缩放且经济高效。

常规 WordPress 安全性和性能提示

WordPress 的受欢迎程度是压倒性的,因而是黑客的攻击目标。 在平台上运行的网站可能容易受到恶意软件和网络钓鱼攻击等安全威胁。 以下提示可以通过创建更安全、性能更好的 WordPress 安装来帮助你解决这些风险。

无论是将虚拟机 (VM) 还是 Azure 应用服务用于你的托管体系结构,或者是否使用其他解决方案,这些提示都适用。

使用 Azure Web 应用程序防火墙

Web 应用程序防火墙有助于保护网站免受基于 Web 的常见攻击。 它充当网站和 Internet 之间的筛选器。 在这里面,Web 应用程序防火墙监视传入的流量,并阻止可能利用网站代码中漏洞的恶意请求。 Web 应用程序防火墙可帮助保护网站免受一系列攻击,包括 SQL 注入、跨站脚本 (XSS),以及跨网站请求伪造 (CSRF)。

应在 Azure Front Door 上使用 Web 应用程序防火墙来为 Web 应用程序提供集中保护。 Azure Front Door 为内容分发网络,可帮助全球用户快速、可靠且安全地访问应用程序的静态和动态 Web 内容。 在 Azure Front Door 上部署 Web 应用程序防火墙可帮助 Web 服务防范常见攻击和漏洞。

删除未使用的插件和主题

应从 WordPress 安装中删除未使用的插件和主题。 此步骤对于帮助确保 WordPress 网站的安全并优化其性能非常重要。 即使是你未主动使用的插件或主题,也会为黑客提供一个利用过时或未维护代码中漏洞的入口点,从而带来安全风险。 此外,在网站上安装大量插件和主题可能会增加加载时间和服务器资源使用量,从而降低其性能。

从 PHP 处理器卸载静态内容

若要减少 PHP 处理器上的负载,应卸载静态内容,例如图像、视频和 CSS 文件。 卸载静态内容有助于优化网站性能并减少服务器负载。 当用户访问网站时,服务器会处理 PHP 代码并动态生成 HTML 内容。 此过程会占用大量资源。 但是,静态内容不会频繁更改,因此你可以直接从服务器文件系统或内容分发网络提供静态内容。 通过卸载这些资产,可以减少服务器 CPU 和 RAM 上的负载。 此配置可减少页面加载时间、提高网站性能并改善用户体验。

从内容分发网络服务(例如 Azure Front Door)提供静态资源还有其他好处。 例如,卸载静态内容时,可以使服务器的放置位置靠近用户的地理位置,以此方式降低延迟并提高网站速度。

注意

若要使用专用终结点来帮助通过 Azure Front Door 保护源,需要使用 Azure Front Door 的高级 SKU。 有关详细信息,请参阅使用专用链接保护源

内容分发网络缓存失效

对于使用内容分发网络的大型 WordPress 安装(例如 Azure Front Door 或 Azure 内容分发网络),需要实现缓存失效逻辑。 每当发生新事件时,都需要使受影响页面的内容分发网络中的缓存失效。 事件示例包括发布新文章、更新现有页面和添加注释。 失效逻辑需要找到更改所影响的全部 URL。 具体而言,逻辑需要在内容分发网络缓存中查找动态生成的页面(如类别和存档)并使其失效。 对于一些已安装的主题和插件,即使是轻微的更改也会影响每个页面。

实现发现逻辑的一种简单方法是使用可手动触发所有 URL 的缓存失效的插件。 但是,一次使所有 URL 都失效可能会导致 WordPress 站点上的流量激增。 有关内容分发网络的缓存失效逻辑示例,请参阅 GitHub 上的刷新 Azure 缓存和部署挂钩实现。

启用双因素身份验证

双因素身份验证可提高安装的安全性,并帮助保护管理员帐户免受未经授权的访问和攻击。 若要利用双因素身份验证,可以使用插件,如 miniOrange 身份验证插件。 除其他功能外,此插件还提供了一种方法,可以将 Microsoft Authenticator 配置为以管理员身份登录 WordPress 站点的用户的双因素身份验证方法。

禁用 XML-RPC 访问

XML-RPC 是一种远程协议,为第三方应用程序提供了一种与网站服务器交互的方式。 但是,此协议也是黑客的常见目标,黑客用它来发起暴力攻击或利用内容管理系统中的漏洞。 如果使用 Azure Front Door,可以通过为具有 /xmlrpc.php 格式的 URL 设置拒绝规则来禁用 XML-RPC。

限制对管理面板的访问

默认情况下,具有帐户凭据和正确 URL(格式为 /wp-login.php/wp-admin)的任何人都可以访问 WordPress 管理面板。 因此,黑客和其他恶意行动者可能会尝试猜测你的凭据、执行会话劫持、发起暴力攻击或利用 WordPress 中的漏洞来获取访问权限。

Web 应用程序防火墙可帮助防止某些攻击,但许多管理员更愿意限制对网络级别的 WordPress 管理面板的访问。

例如,你可以阻止对 Azure Front Door 中的专用 URL 的访问。 然后,可以使用 Azure 应用程序网关从使用中心辐射型拓扑的专用网络进行内部访问。 应用程序网关的内部实例支持 Web 应用程序防火墙规则和 Azure Front Door 规则。 这些规则有助于保护 WordPress 安装免受内部攻击。 如果你可以容忍内部攻击的风险,则可以使用 Azure 负载均衡器的内部实例,而不是应用程序网关。 负载均衡器在开放式系统互连 (OSI) 模型的第四层上运行。

显示已阻止 WordPress 管理面板的公共访问的体系结构示意图。中心辐射型拓扑的 VPN 提供内部访问。

下载此体系结构的 Visio 文件

某些 WordPress 插件要求具有 /wp-admin/admin-ajax.php 格式的 URL 可公开访问并从此拒绝规则中删除。

在 Azure Key Vault 中存储机密

为了帮助确保 Azure 上的 WordPress 部署安全,建议将机密(如数据库密码和 TLS 或 SSL 证书)存储在 Key Vault 中。 此基于云的服务有助于安全存储和管理加密密钥、证书及机密。

Key Vault 可帮助授权的应用程序和服务安全地访问机密。 你无需将它们以纯文本形式存储在 WordPress 容器映像或应用程序代码中。

优化性能

若要优化 WordPress 性能,应优化各种设置并使用插件。以下插件可用于调试 WordPress 安装:

  • 查询监视器提供每个 SQL 查询和其他操作所花费的时间明细。 示例包括 PHP 错误、挂钩和操作、块编辑器块、排队脚本和样式表以及 HTTP API 调用。
  • 圈数提供 WordPress 页面加载所花费的时间明细。

WordPress 的托管挑战

使用 WordPress 应用程序体系结构时,存在几个托管挑战,包括:

  • 可伸缩性。 托管体系结构必须能够在流量高峰期横向扩展。
  • ReadWriteMany (RWX) 存储。 默认情况下,WordPress 将所有静态资产、插件和主题源代码都存储在 /wp-content/ 目录中。 在横向扩展期间,所有节点都必须能够读取和写入该目录。
  • 每秒输入/输出操作数 (IOPS) 存储类。 WordPress 由 PHP 处理器在传入请求期间引用、加载和运行的 1,000 多个 .php 小文件组成。 使用某些协议时,加载大量小文件可能会增加开销。 然后,总体性能会比加载具有相同总大小的文件要慢。 因此,存储解决方案需要支持高 IOPS。
  • 缓存失效。 当应用程序中有新活动(例如发布新项目时)时,需要使所有节点中的缓存均失效。
  • 生成缓存的时间。 对于给定节点的首位用户,在生成缓存之前,响应时间可能会很慢。

Azure 上的 WordPress 托管选项

WordPress 可以在 App 服务、Azure Kubernetes 服务 (AKS) 和 Azure 虚拟机上运行。 安装大小是选择主机时的一个重要因素。 对于小型到中型安装,应用服务是一种经济高效的选择。 但是,对于更大的安装,应考虑 AKS 或 VM 托管。

App 服务上的 WordPress

Microsoft 提供了一个完全托管的解决方案,用于在 Linux 上的应用服务 VM 上运行 WordPress。 有关详细信息,请参阅创建 WordPress 站点。 本解决方案:

  • 旨在帮助你快速轻松地部署 WordPress 安装。
  • 非常适合用于小型到中型 WordPress 安装。
  • 提供 Azure 平台的可伸缩性、可靠性和安全性,而无需复杂的配置或管理。
  • 执行自动更新、备份和监视,以帮助确保站点始终可用。

有关详细信息,请参阅应用服务上的 WordPress

存储密集型工作负载

大型 WordPress 安装可能会占用大量存储资源。 在这些情况下,应使用 IOPS 类较高、延迟又较低的存储解决方案。 建议使用 Azure NetApp 文件。 Azure NetApp 文件可以为存储密集型 WordPress 部署提供支持。 它还提供额外的功能,例如数据保护、备份和还原、跨区域复制和灾难恢复。

对于 WordPress 的容器部署,应使用 AKS。 使用 Azure NetApp 文件时,通过 Kubernetes 容器存储接口 (CSI) 驱动程序实现存储。 Azure NetApp 文件提供了一种 ReadWriteMany 模式,以便所有节点都可以从同一存储进行读写。 有关详细信息,请参阅 AKS WordPress 体系结构

对于在 VM 上运行的大型 WordPress 安装,应通过网络文件系统 (NFS) 协议装载 Azure NetApp 文件。 有关详细信息,请参阅虚拟机上的 WordPress

不可变 WordPress 容器

传统托管方法的替代方法是将 WordPress 部署到不可变容器中。 这种方法有优点也有缺点。 不可变容器中的源代码和所有资源都是固定的,部署之后无法修改。 需要在新版本的容器映像中进行所有更改,包括新插件安装或 WordPress 核心更新。 尽管此方法有助于确保一致性并简化回滚,但必须生成部署管道才能进行更改。 此外,不可变容器提供的持久存储选项可能会受到限制。 你可能需要制定用于处理媒体文件和其他数据的解决方案。 尽管存在这些限制,但不可变容器部署在安全性、可伸缩性和可移植性方面都具有优势。

可以使用自定义容器映像在各种平台上部署 WordPress 的不可变容器化版本,包括 Azure 容器应用、AKS 和应用服务。 可以在 Azure 容器注册表中托管容器映像。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

其他参与者:

  • Adrian Calinescu | 高级云解决方案架构师

若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤

产品文档:

培训模块: