Cloudflare 是提供基於反向代理的內容傳遞網路及分布式域名解析的服務,也就是我們俗稱的CDN加速。它不僅可以緩存網站內容,加速網站提升用戶體驗,還能進行簡單的防火牆設置,讓你的網站和服務器更安全。
使用Cloudflare服務首先需要註冊一個帳戶,你還需要擁有網站域名的管理權。
創建Cloudflare帳戶
打開 https://dash.cloudflare.com/sign-up創建帳戶。
向Cloudflare添加新站點
登錄Cloudflare網站後在頂部的菜單中選擇添加新站點,在打開的頁面中輸入網址添加站點。
然後選擇收費計劃方案。一般來說個人站點或者只是測試Cloudflare服務的話使用免費方案就夠了。
之後,Cloudflare 將會掃描該站點的已有DNS紀錄,若找到將會自動導入,若無法找到則須手動添加。
檢視Cloudflare掃描到的已有DNS紀錄,如需變更可修改紀錄,也可在網站添加成功後任意時間進行修改。
根據頁面上的提示,前往你的域名註冊機構網站,將Cloudflare添加為名稱服務器 nameserver ,刪除其他nameserver。
一些主流域名註冊機構如 GoDaddy、BlueHost 等修改Nameserver方法可參考: https://developers.cloudflare.com/dns/zone-setups/full-setup/setup
完成之後就可以看到這個頁面,可以繼續進行一些簡單的設置,也可在之後前往各項設置進行修改。
點擊開始使用按鈕成功激活後你會收到一封標題為「已将 example.com 添加到 Cloudflare Free计划中」的確認郵件。
Cloudflare提供了SSL/TLS、防火牆\緩存\規則\Scrape Shield等功能,本文主要介紹防火牆設置。
Cloudflare防火牆設置
啟用自動程序攻擊模式
開啟後等待一些時間,你有可能在防火牆攔截紀錄中找到相關紀錄。
設置防火牆規則
針對Bad bots、spam attacks 等行為,我們在Cloudflare防火牆中除了啟用自動程序攻擊模式外,還需手動創建防火牆規則。
免費帳戶可以創建5個防火牆規則。
一般來說,可以參考著創建以下2條防火牆規則:
- 防火墙通用規則。為避免誤中,可以將動作選擇為JS質詢或者質詢。
1(cf.threat_score ge 2 and not cf.client.bot)
参数解析:
- cf.threat_score :威脅分數是Cloudflare用來確認IP信譽的分數,範圍是0~100,數字越大信譽約差。
- cf.client.bot:合法機器人爬蟲
- 自定义防火墙规则。這條規則乃心酸總結,動作可以直接設置為阻止,寧可錯殺一百不可放過一個。
1(http.user_agent contains "curl") or (http.user_agent contains "requests") or (http.user_agent contains "python") or (http.user_agent contains "java") or (http.user_agent contains "urllib") or (http.user_agent contains "Java") or (http.user_agent contains "Ruby") or (http.user_agent contains "Go-http-client") or (not http.user_agent contains "/" and not ip.src in $white_list) or (http.request.uri.path eq "/wp-login.php" and http.request.version eq "HTTP/1.1" and http.request.method eq "POST") or (http.user_agent contains "scalaj-http") or (http.user_agent contains "MJ12bot") or (http.user_agent contains "PetalBot") or (http.request.uri.path eq "/xmlrpc.php" and not http.request.uri.query contains "jetpack") or (http.user_agent contains "Readdig") or (http.user_agent contains "AhrefsBot") or (http.user_agent contains "okhttp") or (http.user_agent contains "SemrushBot") or (http.user_agent contains "DotBot") or (http.user_agent contains "BLEXBot") or (http.user_agent contains "Buck") or (http.user_agent contains "Mb2345Browser")
参数解析:
- http.user_agent:用戶代理
- http.request.uri.path:頁面路徑
- http.request.version:HTTP版本
- http.request.method:HTTP請求方法
- ip.src:訪客IP地址
更多Cloudflare防火牆規則字段的說明,可以參考這篇「Cloudflare中firewall的编写方法」。
一些小技巧
❇NGINX LOG日誌中恢復原始訪問者IP紀錄
在Cloudflare中添加並激活網站後,你會發現服務器上的NGINX日誌紀錄中的訪客IP都變成了Cloudflare的IP,這給日常服務器監控帶來不便,因此我們需要修改NGINX的設定,使LOG中紀錄原始訪客IP。
修改方法參考 :
- 「恢复原始访问者 IP:使用 mod_cloudflare 记录访问者 IP 地址」
- 「Getting Real IP Addresses Using CloudFlare, Nginx, and Varnish」
❇啟用Hotlink保護後RSS feed中圖片不可見
根據官方文檔的說明,啟用Hotlink保護將導致RSS feed中的圖片不可見,嗐,現在用RSS Feed的人越來越少了,圖片不可見就不可見吧,另外也可以在每一個feed中增加文字說明引導訪客前往原站點,覺得這比RSS feed只輸出摘要客氣多了。
❇可能會用到的工具
- 查詢IP地址詳情工具:https://ipinfo.io/
- IP Address Fraud Check工具:https://scamalytics.com/ip
- 查詢user agent工具:https://userstack.com/ ,https://user-agents.net/lookup