轉載地址: WordPress安全加速:Cloudflare + Nginx緩存優化方案
前言:數字時代的“驛站”與“快馬”
在古代,驛站系統讓信息傳遞快馬加鞭,而今天,Cloudflare與Nginx的緩存優化,正是現代網站的“數字驛站”。本教程將帶您配置靜態資源長期緩存、動態頁面智能緩存,以及敏感路徑保護,讓您的WordPress網站如離弦之箭,飛速加載。
適用環境
✔ 域名託管於Cloudflare(橙色雲代理開啓)\
✔ WordPress運行在OpenResty/Nginx(如1Panel面板)\
✔ 已準備好服務器終端訪問權限
第一步:Nginx緩存配置
目標:打造“靜態資源保險庫”——讓CSS、JS、圖片等靜態資源長期緩存,減少重複請求。
1. 編輯Nginx配置文件
在1Panel面板中,進入 網站 → 選擇站點 → 配置文件(如nginx.conf) ,在server塊內添加以下規則:
# 添加靜態資源(CSS/JS/圖片等)——365天緩存
location ~* .(css|js|png|jpg|jpeg|gif|ico|svg|webp|woff2)$ {
expires 365d;
add_header Cache-Control "public, immutable";
access_log off;
# 隱藏干擾頭
proxy_hide_header Set-Cookie;
proxy_hide_header Pragma;
}
# 添加動態頁面(首頁/分類頁/標籤頁)——10分鐘緩存
location ~ ^/$|/page/|/category/|/tag/ {
add_header Cache-Control "public, max-age=600, stale-while-revalidate=300";
}
# 添加禁止緩存後台和敏感路徑(如/wp-admin/)
location ~* ^/(wp-admin|wp-login|xmlrpc.php|my-account) {
add_header Cache-Control "no-cache, no-store, must-revalidate";
expires 0;
}
# PHP請求處理(保持原有配置,僅添加緩存頭)
location ~ [^/].php(/|$) {
fastcgi_pass 127.0.0.1:9000;
include fastcgi-php.conf;
include fastcgi_params;
# 添加緩存頭-動態緩存控制
add_header Cache-Control "public, max-age=600";
}
2. 重載Nginx配置
openresty -t && openresty -s reload
效果:靜態資源就像“圖書館的藏書”,適合長期緩存;動態頁面就像“每日更新的報紙”,適合短時更新;後台路徑則完全繞過緩存,確保安全。
第二步:Cloudflare緩存規則
Cloudflare的Cache Rules如同智能的“流量調度員”,讓緩存策略更靈活,避免一刀切。
通過規則→概述→Cache Rules→創建規則,進入緩存規則創建界面
1. 靜態資源緩存(1年)
- 規則名稱:
Cache Static Assets - 匹配條件:
<!---->
(http.request.uri.path contains "/wp-content/")
and
(http.request.uri.path ext in ("css" "js" "png" "jpg" "webp"))
-
操作:
-
邊緣TTL:
如果存在,使用緩存控制標頭,如果不存在,使用 Cloudflare 的默認 TTL 緩存請求來獲取響應狀態。
2. 動態頁面緩存(10分鐘)
-
- 規則名稱:
Cache Dynamic Pages - 匹配條件:
<!---->
(http.request.uri.path in {"/" "/category/*" "/tag/*"})
-
操作:
- 邊緣TTL:
10分鐘
- 邊緣TTL:
3. 繞過敏感路徑(如後台)
- 規則名稱:
Bypass Admin - 匹配條件:
<!---->
(http.request.uri.path contains "/wp-admin/")
or
(http.cookie contains "wordpress_logged_in")
- 操作:繞過緩存
第三步:驗證緩存狀態
1. 靜態資源驗證
curl -I https://yourDomain.com/wp-content/themes/YourTheme/style.css
預期輸出:
HTTP/2 200
CF-Cache-Status: HIT
Cache-Control: public, max-age=31536000, immutable
2. 動態頁面驗證
curl -I https://yourDomain.com/
可能結果:
- 已緩存:
CF-Cache-Status: HIT - 未緩存:
CF-Cache-Status: DYNAMIC
3. 後台路徑驗證
curl -I https://yourDomain.com/wp-admin/ --cookie "wordpress_logged_in=123"
預期輸出:
CF-Cache-Status: BYPASS
Cache-Control: no-store
第四步:故障排查
- 問題:
CF-Cache-Status: DYNAMIC\
解決:檢查Cache Rules是否匹配目標路徑 - 問題:
CF-Cache-Status: BYPASS\
解決:確認請求未攜帶Cookie或訪問敏感路徑 - 問題:緩存未更新\
解決:手動清除Cloudflare緩存或修改文件名
結語:速度與安全的平衡
✅ 靜態資源:1年緩存,減少90%請求\
✅ 動態頁面:10分鐘緩存,平衡實時性與速度\
✅ 後台路徑:完全繞過緩存,確保安全