Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

如何同時使用 Webinoly 與 Cloudflare 保護網站安全

在社群夥伴勇哥的文章〈Webinoly 最新版快速安裝〉中,提到使用 Webinoly 來建立 WordPress 用的 LEMP 環境時,有時候會有跟 Cloudflare 衝突的情況,尤其在使用 sudo site example.com -ssl=on 的時候。

原本的做法是直接不透過 Cloudflare 的 Proxy 處理流量,但是在一次客戶網站被 DDoS 攻擊後,我發現可能還是要用 Cloudflare 來協助過濾一下一些比較暴力的攻擊模式,所以認真研究了一下讓 Webinoly 跟 Cloudflare 可以和平共處的方法。

結論來說,就是:

  1. Webinoly 在新建網站時,先關閉 wp-admin 的 httpauth:sudo httpauth example.com -wp-admin=off
  2. 在 Cloudflare 上,選擇 [完整 (嚴格)] (英文版的 Full (Strict)) 加密模式
  3. 關閉 Cloudflare 上的 [一律使用 HTTPS] 功能

Cloudflare 的加密模式

Cloudflare 免費版提供了 4 個 SSL/TLS 的加密模式選項,分別是:

  1. 完整 (嚴格) – Full (Strict)
  2. 完整 – Full
  3. 彈性 – Flexible
  4. 關閉 – 不安全

因為我們已經透過 Let’s Encrypt 產生 SSL 憑證,所以透過 [完整 (嚴格)] 的方式加密即可。使用 Flexible 的時候有時會產生 Too Many Redirects 的問題。

原本最早我的做法是直接選 [關閉],但後來基於安全性的考慮,想說最好還是多一端的加密,因此建議還是可以開啟 [完整 (嚴格)]。

Certbot 產生 SSL 的機制

根據 Certbot 的文件,驗證並產生憑證的方法有兩種:

  • 在 example.com 下配置 DNS 記錄。
  • 在 http://example.com/ 的已知 URI 下配置 HTTP 資源。

而從 Webinoly 回傳的系統訊息當中,我們可以看到它預設使用的是第二種方式的驗證方法,因為 DNS 紀錄沒有辦法簡單地從主機端去自動處理。

因此,重點在於要讓 http 的版本可以順利存取,因此關閉 Cloudflare 強制改寫 httphttps 的功能是必要的。

相關文章

Eric Chuang
Eric Chuang

正職是廣告行銷人員,因為 Google Tag Manager 的關係開始踏入網站製作的領域,進一步把 WordPress 當成 PHP + HTML + CSS + JavaScript 的學習教材。此外,因為工作的關係,曾經用 Automattic 的 Underscores (_s) 替客戶與公司官網進行全客製化佈景主題開發。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料