編輯

共用方式為


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 應用程式服務作為託管體系架構,或是否使用其他解決方案,這些提示都適用。

使用 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。 有關更多資訊,請參閱使用私人連結保護您的來源

內容傳遞網路快取失效

對於使用內容交付網路 (例如 Azure Front Door 或 Azure 內容傳遞網路) 的大型 WordPress 安裝,您需要實現快取失效邏輯。 每當發生新事件時,您都需要使受影響頁面的內容分發網路中的快取失效。 活動的範例包括發布新文章、更新現有頁面和新增評論。 失效邏輯需要找到更改影響的所有 URL。 具體來說,該邏輯需要在內容交付網路快取中尋找動態生成的頁面 (例如類別和檔案) 並使其失效。 對於某些已安裝的主題和外掛程式,即使很小的變更也會影響每個頁面。

實現發現邏輯的一種方法是使用外掛程式,該外掛程式可以手動觸發所有 URL 的快取失效。 但同時使所有 URL 失效可能會導致 WordPress 網站的流量激增。

啟用雙因素驗證

雙重認證可提高安裝的安全性,並有助於保護您的管理員帳戶免受未經授權的存取和攻擊。 要利用雙重認證,您可以使用諸如 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 Load Balancer 的內部執行個體而不是應用程式閘道。 Load Balancer 在開放系統互連 (OSI) 模型的第四層運作。

顯示受封鎖的對 WordPress 管理面板的公共存取的架構圖。中心輻射型拓撲中的 VPN 提供內部存取。

下載此架構的 Visio 檔案

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

將祕密儲存在 Azure Key Vault 中

為了協助確保 Azure 上 WordPress 部署的安全,我們建議您在 Key Vault 中儲存機密,例如資料庫密碼和 TLS 或 SSL 憑證。 這種基於雲端的服務有助於提供加密金鑰、憑證和機密的安全儲存和管理。

Key Vault 可協助您的授權應用程式和服務安全地存取機密。 您不需要將它們以純文字形式儲存在 WordPress 容器映像或應用程式程式碼中。

調整效能

要最佳化 WordPress 效能,您應該調整各種設定並使用外掛程式。以下外掛程式可用於調試 WordPress 安裝:

  • 查詢監視器提供每個 SQL 查詢和其他操作所花費時間的詳細資訊。 範例包括 PHP 錯誤、掛鉤和操作、區塊編輯器區塊、排隊腳本和樣式表以及 HTTP API 呼叫。

  • Laps 是一個顯示有關 WordPress 頁面載入效能資訊的外掛程式。 它提供易於檢查的視覺化摘要,自動追蹤 PHP 執行、核心進程、外掛程式載入、主題載入、主後循環、側邊欄、資料庫查詢和網路請求等事件。 此細分顯示了 WordPress 頁面載入所花費的時間。

WordPress 的託管挑戰

對於 WordPress 應用程式架構,存在一些託管挑戰,包括:

  • 延展性。 託管架構必須能夠在高峰流量期間進行擴充。
  • ReadWriteMany (RWX) 儲存。 預設情況下,WordPress 將所有靜態資源、外掛程式和主題原始碼儲存在 /wp-content/ 目錄中。 在橫向擴展期間,所有節點都必須能夠讀取和寫入該目錄。
  • 每秒輸入/輸出操作數 (IOPS) 儲存類別。 WordPress 由 1,000 多個小型 .php 檔案組成,PHP 處理器在傳入請求期間引用、載入和執行這些檔案。 對於某些協議,載入大量小檔案會增加開銷。 整體效能比載入總大小相同的一個檔案要慢。 因此,儲存解決方案需要支援高 IOPS。
  • 快取失效。 當應用程式中有新活動時,例如當您發布新文章時,您需要使所有節點上的快取失效。
  • 建構快取的時間。 對於給定節點的第一個用戶,回應時間可能會很慢,直到快取建立為止。

Azure 上的 WordPress 託管選項

WordPress 可以在應用程式服務、Azure Kubernetes 服務 (AKS) 和 Azure 虛擬機器上執行。 安裝的大小是您選擇主機的重要因素。 對於中小型安裝,應用程式服務是一種經濟高效的選擇。 但是,對於大型安裝,您應該考慮 AKS 或 VM 託管。

App Service 上的 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。

下一步

產品文件:

定型模組: