Azure 上的 WordPress

Azure App Service
Azure Front Door
Azure Kubernetes Service (AKS)
Azure Web 應用程式防火牆
Azure Private Link

WordPress 是一種多功能且熱門的內容管理系統,可用來建立各種大小的網站,以供多個用途使用。 從小型個人部落格到大規模的公司網站和電子商務商店,WordPress 提供各種功能與自訂專案,以符合不同的需求。 不過,由於安裝的大小和使用案例不同,WordPress 也有獨特的裝載需求,視流量和儲存體需求等因素而定。

本文涵蓋 Azure 上的 WordPress 部署。 其提供考慮和實作的指引,以協助確保安全、可調整且符合成本效益的安裝。

一般 WordPress 安全性和效能秘訣

由於其熱門程度過大,WordPress 是駭客的目標。 在平臺上執行的網站可能會容易受到安全性威脅,例如惡意程式碼和網路釣魚攻擊。 下列秘訣可協助您解決這些風險,方法是建立更安全且效能更佳的 WordPress 安裝。

無論您使用虛擬機器 (VM) 還是Azure App 服務裝載架構,或您是否使用其他解決方案,這些秘訣都適用。

使用 Azure Web 應用程式防火牆

Web 應用程式防火牆可協助保護您的網站免于遭受常見的 Web 型攻擊。 它可作為您的網站與網際網路之間的篩選。 在此容量中,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。 如需詳細資訊,請參閱使用 Private Link 保護您的來源

內容傳遞網路快取失效

對於使用內容傳遞網路的大型 WordPress 安裝,例如 Azure Front Door 或 Azure 內容傳遞網路,您需要實作快取無效邏輯。 每當發生新的事件時,您必須使受影響頁面的內容傳遞網路中快取失效。 事件的範例包括發佈新文章、更新現有的頁面,以及新增批註。 無效邏輯必須找出變更影響的所有 URL。 具體而言,邏輯必須在內容傳遞網路快取中尋找並失效動態產生的頁面,例如類別和封存。 使用一些已安裝的主題和外掛程式,即使是次要變更也會影響每個頁面。

實作探索邏輯的簡單方式是使用外掛程式,以針對所有 URL 手動觸發快取失效。 但是一次使所有 URL 失效,可能會導致流量在 WordPress 網站尖峰。 如需內容傳遞網路的快取失效邏輯範例,請參閱 排清 Azure 快取,並在 GitHub 上部署攔截實作。

啟用雙因素驗證

雙因素驗證會增加安裝的安全性,並協助保護您的系統管理員帳戶免于未經授權的存取和攻擊。 若要利用雙因素驗證,您可以使用 miniOrange 驗證外掛程式之類的外掛程式。 除了其他功能之外,此外掛程式可讓您將 Microsoft Authenticator 設定為雙因素驗證方法,讓以系統管理員身分登入 WordPress 網站的使用者。

停用 XML-RPC 存取

XML-RPC 是一種遠端通訊協定,可提供協力廠商應用程式與網站伺服器互動的方式。 不過,此通訊協定也是駭客的常見目標,其用來啟動內容管理系統中的暴力密碼破解攻擊或惡意探索弱點。 如果您使用 Azure Front Door,您可以設定格式 /xmlrpc.php 為 的 URL 拒絕規則來停用 XML-RPC。

限制系統管理面板的存取

根據預設,您的 WordPress 系統管理面板可供具有您帳號憑證的任何人存取,以及格式 /wp-login.php 為 或 /wp-admin 的正確 URL。 因此,駭客和其他惡意動作專案可以嘗試猜測您的認證、執行會話攔截、啟動暴力密碼破解攻擊,或利用 WordPress 中的弱點來取得存取權。

Web 應用程式防火牆有助於防止某些攻擊,但許多系統管理員偏好限制對網路層級上 WordPress 系統管理面板的存取。

例如,您可以封鎖存取 Azure Front Door 中的私人 URL。 然後,您可以使用 Azure 應用程式閘道,從使用中樞和輪輻拓撲的私人網路提供內部存取。 應用程式閘道的內部實例支援Web 應用程式防火牆規則和 Azure Front Door 規則。 這些規則可協助保護您的 WordPress 安裝不受內部攻擊。 如果可以容忍內部攻擊的風險,您可以使用內部實例Azure Load Balancer,而不是應用程式閘道。 Load Balancer會在開放系統相互連線 (OSI) 模型的第四層運作。

顯示 WordPress 系統管理面板已封鎖公開存取的架構圖表。中樞和輪輻拓撲中的 VPN 可提供內部存取。

下載這個架構的 Visio 檔案

某些 WordPress 外掛程式需要具有可公開存取格式 /wp-admin/admin-ajax.php 的 URL,並從此拒絕規則中移除。

將祕密儲存在 Azure Key Vault 中

為了協助確保 Azure 上的 WordPress 部署安全性,建議您在金鑰保存庫中儲存秘密,例如資料庫密碼和 TLS 或 SSL 憑證。 此雲端式服務可協助提供安全儲存和管理密碼編譯金鑰、憑證和秘密。

金鑰保存庫可協助您的授權應用程式和服務安全地存取秘密。 您不需要將它們儲存在 WordPress 容器映射或應用程式程式碼中的純文字中。

調整效能

若要優化 WordPress 效能,您應該微調各種設定並使用外掛程式。下列外掛程式可用於偵錯 WordPress 安裝:

  • 查詢監視器 提供每個 SQL 查詢和其他動作所花費時間的明細。 範例包括 PHP 錯誤、攔截和動作、區塊編輯器區塊、排入佇列的腳本和樣式表單,以及 HTTP API 呼叫。
  • Laps 提供 WordPress 頁面載入所花費時間的明細。

WordPress 的裝載挑戰

使用 WordPress 應用程式架構時,有數個裝載挑戰,包括:

  • 延展性。 裝載架構必須在尖峰流量期間相應放大。
  • ReadWriteMany (RWX) 儲存體。 根據預設,WordPress 會將所有靜態資產、外掛程式和主題原始程式碼儲存在 /wp-content/ 目錄中。 在向外延展期間,所有節點都必須能夠讀取和寫入該目錄。
  • 每秒的輸入/輸出作業 (IOPS) 儲存體類別。 WordPress 是由 PHP 處理器在傳入要求期間參考、載入和執行超過 1,000 個小型 .php 檔案所組成。 透過某些通訊協定,載入許多小型檔案可能會增加額外負荷。 整體效能會比載入大小相同的檔案慢。 因此,儲存體解決方案必須支援高 IOPS。
  • 快取失效。 當應用程式中有新的活動時,例如當您發佈新發行項時,您必須將所有節點的快取失效。
  • 建置快取的時間。 針對指定節點的第一個使用者,回應時間可能會變慢,直到建置快取為止。

Azure 上的 WordPress 裝載選項

WordPress 可以在App Service、Azure Kubernetes Service (AKS) 和 Azure 虛擬機器上執行。 安裝的大小是您所選取主機的重要因素。 對於小型到中型安裝,App Service是符合成本效益的選項。 不過,針對較大的安裝,您應該考慮 AKS 或 VM 裝載。

App Service 上的 WordPress

Microsoft 提供完全受控的解決方案,可在Linux 上的 App Service VM 上執行 WordPress。 如需詳細資訊,請參閱 建立 WordPress 網站。 此解決方案:

  • 其設計目的是協助您快速且輕鬆地部署 WordPress 安裝。
  • 適合用於小型到中型 WordPress 安裝。
  • 提供 Azure 平臺的延展性、可靠性和安全性,而不需要複雜的設定或管理。
  • 執行自動更新、備份和監視,以協助確保您的網站隨時可用。

如需詳細資訊,請參閱App Service 上的 WordPress

需要大量儲存體的工作負載

大型 WordPress 安裝可能會需要大量儲存空間。 在這些情況下,您應該使用具有高 IOPS 類別和低延遲的儲存體解決方案。 我們建議Azure NetApp Files。 Azure NetApp Files可以支援需要大量儲存體的 WordPress 部署。 它也提供額外的功能,例如資料保護、備份和還原、跨區域複寫和災害復原。

針對 WordPress 的容器部署,您應該使用 AKS。 使用 Azure NetApp Files,透過 Kubernetes 容器儲存體介面 (CSI) 驅動程式實作儲存體。 Azure NetApp Files提供 ReadWriteMany 模式,讓所有節點都可以讀取和寫入相同的儲存體。 如需詳細資訊,請參閱 AKS WordPress 架構

針對在 VM 上執行的大型 WordPress 安裝,您應該透過網路檔案系統掛接 Azure NetApp Files (NFS) 通訊協定。 如需詳細資訊,請參閱 虛擬機器上的 WordPress

不可變的 WordPress 容器

傳統裝載方法的替代方法是將 WordPress 部署到不可變的容器。 此方法的優點和缺點。 不可變容器內的原始程式碼和所有資源都是固定的,且無法在部署之後修改。 您必須在新版本的容器映射中進行所有變更,包括新的外掛程式安裝或 WordPress 核心更新。 雖然這種方法有助於確保一致性並簡化復原,但您必須建置部署管線來進行變更。 此外,不可變容器可以在其提供的永續性儲存體選項中受到限制。 您可能需要開發處理媒體檔案和其他資料的解決方案。 儘管有這些限制,但不可變的容器部署在安全性、延展性和可攜性方面提供優點。

您可以在各種平臺上部署不可變的 WordPress 容器化版本,包括 Azure Container Apps、AKS 和具有自訂容器映射的App Service。 您可以在 Azure Container Registry 中裝載容器映射。

參與者

本文由 Microsoft 維護。 最初是由下列參與者所撰寫。

主體作者:

其他參與者:

  • Adrian Calinescu |資深雲端解決方案架構設計師

若要查看非公用LinkedIn設定檔,請登入 LinkedIn。

下一步

產品文件:

訓練模組: