相信使用 WordPress 架站的朋友一定都聽過 Cloudflare,我也陸續寫過幾篇關於它的相關應用和教學,簡單來說,Cloudflare 是一項整合網域名稱解析、網站加速和安全防護等功能的超實用工具,它的內容傳遞網路特性可讓網站在全世界各個地區都有相當好的連線速度。如果你正在起步,也正好使用 WordPress,那麼絕對推薦搭配 Cloudflare 使用,可讓你的網站有加分效果,也省去很多麻煩。
在開始前,建議你可以先去閱讀之前我寫的這篇文章「Cloudflare 架站者必備免費 CDN、DNS 託管服務設定教學,網站載入加速、節省流量防止惡意攻擊」,這篇是非常完整的 Cloudflare 使用教學和介紹。你也可以把 Cloudflare 單純當成 DNS 代管而不啟用 CDN 和 WAF 功能,這也是很多網站目前作法,從 DNSPerf 記錄上顯示出 Cloudflare 目前可能是世界數一數二快的 DNS Hosting 。
使用 WordPress + Cloudflare 建議搭配免費外掛程式,可一鍵為網站快速套用最佳化設定,省去手動調整時間(尤其又對於設定選項不那麼熟悉),如果你是使用 Cloudways 那就更好了,它們開發的免費輕量快取外掛 Breeze 也內建整合 Cloudflare 功能。
本文要再來深入介紹如果你使用 WordPress 架站,在 Cloudflare 端應該可以做那些設定來增強你的 WordPress 安全性和效能,這裡會用到的是「Page Rules」功能,免費方案可以加入最多三組,也能額外加價購買額度,不過如果付費升級 Pro 方案將有 20 組配額,對於一般網站來說應該很足夠。
使用 Page Rules 增強網站安全性和效能
如果使用 Google 搜尋一下,國外網站會有不少教你如何利用 Cloudflare Page Rules 功能讓網站變得更快的作法,不過作法眾說紛紜,除非你非常有實驗精神,那就可以花點時間去探究看看設定是不是確實有幫助。
在這裡我會使用 Cloudflare 官方的最佳化方式,如果你有興趣也可回到原網站看看教學影片,原則上免費方案只能設定三組 Page Rules,我會將最重要三個放在最前面,其他的項目就視個人需求調整。
STEP 1
開啟登入 Cloudflare 後,從上方選單找到「Page Rules」,這可能也是使用者比較少會留意到的功能,接著就能點選「Create Page Rule」建立新的頁面規則。
STEP 2
Page Rule 是一個觸發的機制,將觸發網址設定進去,然後選擇要執行的設定選項,如此一來 Cloudflare 就會自動處理。接下來我會介紹一些對於 WordPress 使用者有用的頁面規則設定方式,請讀者繼續閱讀下去(挑幾個對自己有用的放到自己的 Cloudflare 設定中)。
適用於 WordPress 的 Page Rule 列表
以下範例網址使用 example.com ,請視情況自行更改為你的網域名稱。
1. 將所有流量重定向到 HTTPS 頁面
網址部分輸入 https://*example.com/*
,在底下的設定值選擇「Always Use HTTPS」強制讓所有走 http 協議的流量進入 https,這也是網站使用 SSL 加密後的必要工作。如果想知道要如何讓 WordPress 加上綠色鎖頭,可參考「在 WordPress 設定 HTTPS,強制使用 SSL 安全加密協定教學」一文。
2. 將 www 重新導向至 non-www 網址
如果你是使用裸域名(Naked domains)作網址,例如:example.com
,或曾經使用 www
子網域名稱,必須將 www 的流量重新導向現有網址,可在網址輸入 www.example.com/*
,底下設定值選擇「Forwarding URL」及「301 – Permanent Redirect」,接著在目標網址輸入 https://example.com/$1
。
這個作法可以避免搜尋引擎最佳化(SEO)中的多重內容問題。
3. 保護 WordPress 登入頁面
對 WordPress 來說最重要的就是控制台,要進入控制台之前必須經過登入步驟,因此登入頁面也就成為許多駭客下手的目標,透過 Cloudflare 安全防護機制保護登入頁面,減少被攻擊造成損害的機會。若你想尋求更安全的防護機制,我推薦「啟用 Jetpack 單一登入機制教學,讓你的 WordPress 網站更安全(含兩步驟驗證)」會更一勞永逸。
設定方式很簡單,在網址部分輸入登入頁面網址 example.com/wp-login.php*
,下方設定值選擇「Security Level」再將防護等級調整到「High」。
4. 保護 WordPress 控制台
前面提到登入頁面很重要,其實 WordPress 控制台也很容易變成攻擊下手目標,防護方式一樣可透過 Page Rule 做到,網址部分輸入 example.com/wp-admin*
,然後切換以下選項:
- Security Level 改為 High 。
- Cache Level 改為 Bypass ,不快取任何內容。
- Disable Apps,停用 Apps。
- Disable Performance,停用效能加速功能。
5. 保護 XML-RPC
XML-RPC
是一項遠端程式呼叫的協議,使用 HTTP 作為傳送機制,如果你使用離線編輯器,通常是透過 XML-RPC
與你的 WordPress 網站連線、傳遞內容,但 XML-RPC
也就成為駭客和惡意攻擊下手的目標之一,沒用到建議就把它關掉吧!當然你可以直接透過 functions.php
將這個功能停用,或是從 .htaccess
寫入阻擋連線請求的相關語法,亦能透過 Page Rule 功能將它引導到其他路徑。
網址部分輸入 example.com/xmlrpc.php*
,下方設定值選擇「Forwarding URL」及「301 – Permanent Redirect」,接著在目標網址輸入 https://example.com
。
6. 強制 Cloudflare 快取圖片檔案
雖然 Cloudflare 本身就會快取靜態檔案(會被快取的檔案類型),但我們還是可以透過一些設定強制讓靜態檔案快取在各個節點,同時設定 Edge Cache TTL 也就是快取時間,這麼做將可以使圖片載入速度更快(直接從 Cloudflare 節點提供檔案,而不用回去原伺服器抓取資料),對於圖片很多的網站來說非常有用。
設定方式為網址部分填入 example.com/wp-content/uploads*
(你的圖片上傳路徑,如果你不是讓 WordPress 安裝於根目錄或有修改路徑請自行調整),接著設定以下規則:
- Browser Cache TTL 改為 a day 。
- Cache Level 改為 Cache Everything 。
- Edge Cache TTL 改為 a month 。
7. 強制快取重要頁面,網站出錯時依然可用
接下來的功能不一定每個人都會用到,但 Cloudflare 官方最佳化教學提供了這個方法,我想如果你有多餘的 Page Rule 額度或許可以試試看,把網站一些重要的頁面(例如介紹、聯絡方式)加入強制快取的範圍。因為 Cloudflare 預設情況下不會快取 HTML 格式檔案,必須透過以下方式才能讓頁面被儲存下來:
- Browser Cache TTL 改為 a day 。
- Always Online 改為 On 。
- Cache Level 改為 Cache Everything 。
- Edge Cache TTL 改為 a month 。
網址部分就設定成你要強制快取的頁面即可,例如:example.com/about
。
總結
以上是 Pseric 最近又重新研究 WordPress 搭配 Cloudflare 架站的一些小小心得。
就如同前文所述,在網路上有許許多多、數不盡的 Cloudflare 設定方法,但要聽信誰說的好像又沒一個準則,通常這種情況直接看官方文件大概八九不離十。當然官方提供的教學是普遍適合大多數網站的方法,但能不能適合你我想也不一定,這時候不妨發揮自架站的精神,好好徹底研究一下 Cloudflare 吧!Cloudflare 是一個非常強大的服務(工具),如果能夠善加利用將有助於你的架站之路更加順暢。