Cloudflare:提升網站速度和安全性的全面指南
Cloudflare,源於蜜罐項目(Project Honeypot),是一個提供DDoS檢測和防護服務的提供商,它能減輕服務器壓力並加快網站速度。它還提供“始終在線”選項,在源服務器出現故障時提供網站的簡化版本。
Cloudflare的獨特之處在於,它並非一開始就作為加速/性能工具,而是源於旨在提供垃圾郵件和黑客防護服務的蜜罐項目。時至今日,DDoS檢測和防護仍然是Cloudflare的主要賣點之一。其算法會記錄訪問者的IP地址、有效負載、請求資源和請求頻率,以檢測惡意訪問者。
由於Cloudflare位於網站和所有傳入流量之間的代理位置,它能夠顯著減輕服務器的壓力,以至於DDoS攻擊甚至無法到達原始網站,正如引言中所述。 Cloudflare還提供“始終在線”選項,該選項會緩存用戶網站的一個版本,並在源服務器出現故障(原始網站返回5xx或4xx錯誤)時提供該網站的簡化版本。它還具有完整的頁面緩存功能。
這些功能具有巨大的優勢:它們可以挽救在高負載下苦苦掙扎的Web服務器,並且在服務器發生錯誤的情況下,可以為開發人員提供喘息的空間來解決問題。
Cloudflare還提供免費服務。當然,也有高級套餐,有些功能(如附加頁面規則)需要付費,但僅Cloudflare免費層的範圍就足以使其值得學習其優缺點。對比基準測試表明,Cloudflare在速度方面處於中等水平,但很難說它是市場上性價比最高的CDN。
Cloudflare設置
使用Cloudflare設置網站非常簡單。在https://www.php.cn/link/6f7bc4baeb295716fa1dbbf64887fcff註冊後,我們可以添加一個新網站。當系統掃描給定域的IP和其他詳細信息時,我們會看到一個介紹性視頻。完成後,我們會得到新的域名服務器,需要在我們的註冊商處設置。
我們需要在我們的註冊商處註冊這些域名服務器,並等待更改在互聯網上傳播。這可能需要長達24小時。
此更改意味著將我們對域的所有控制權交給Cloudflare。這也意味著,如果我們在該域上擁有電子郵件(MX記錄),我們需要將這些記錄轉移到Cloudflare。如果我們有任何子域,也需要在Cloudflare的儀表板中將其設置為相應的A記錄。
所有在我們的域名註冊商或託管提供商處設置的現有域名記錄都需要移動/複製到Cloudflare。
一些託管服務提供商可能會進一步簡化/自動化此轉換過程。
對於我們的每個域名記錄,我們可以選擇簡單地讓所有流量直接通過我們的服務器——這意味著我們可以為某些子域設置例外——或者我們可以關閉所有Cloudflare功能——例如,當我們在網站上進行一些更改時。
一旦我們設置了域,基本上就是在Cloudflare儀表板之外所需的所有工作。在網站本身或源服務器上無需再執行任何操作。所有進一步的調整都在Cloudflare網站上完成。
加密設置
SSL證書是Cloudflare免費計劃的一部分。有四種SSL設置選項,我們可以在儀表板的“加密”選項卡下找到它們。
使用這些設置,我們需要確保設置合理,因為我們在最終用戶和服務器內容之間有兩層,因此這裡的遺漏會導致重定向循環,或者過多的重定向最終會減慢網站速度。
Cloudflare還提供購買自定義證書的選項,對於需要額外安全或關心其市場形象的高級用戶,它提供了上傳自定義/高級證書的選項。這是高級計劃的一部分。
網站安全
這是Cloudflare閃光的一個領域:它提供了前所未有的免費價值。在整個託管領域,DDoS防護是一項高級服務,即使對於付費客戶也並非總是提供。
Cloudflare在免費層提供無限的DDoS防護,以及其他一些相當複雜的工具,這些工具可以在惡意流量到達之前就在基礎設施級別保護網站。它提供速率限制——根據用戶定義的、可自定義的規則來限制訪問。它提供智能防火牆規則、國家/地區阻止、瀏覽器完整性檢查、驗證碼保護等等。
如今,當殭屍網絡統治互聯網,新安裝的網站或服務器有時會在上線幾分鐘內被暴力破解嘗試淹沒時,當垃圾郵件發送者自動執行Web評論,並且即使沒有任何入侵,推薦者垃圾郵件也很猖獗時,利用非常規手段的POST攻擊和緩慢攻擊並不罕見。這種保護可以成敗小型或中型網站。
還有抓取保護,拒絕向某些訪問者配置文件提供某些資源,或混淆電子郵件。
高級套餐提供更多選項。
速度和性能
默認情況下,使用Cloudflare,我們可以緩存靜態內容——JavaScript、字體、樣式表,甚至圖像。我們可以設置緩存到期規則。對於各種CMS系統,有一些插件可以連接到Cloudflare,以便我們可以在網站內部清除緩存。
這些靜態資源在DNS設置後由Cloudflare的基礎設施“接管”,然後根據訪問者的位置從其遍布全球的數據中心網絡提供服務。
資源可以根據查詢字符串或我們的源服務器設置的緩存頭進行緩存(或從源獲取)。例如,在PHP中,我們可以像這樣設置緩存到期:
<code>header('Cache-Control: max-age=3600');</code>
如果這還不夠,我們可能需要刪除Pragma、Expires和Cache Control標頭:
<code>header_remove('Pragma'); header_remove('Expires'); header_remove('Cache-Control');</code>
我們也可以在服務器級別執行此操作。在nginx中,我們將在虛擬主機塊/文件中設置這些規則:
<code>if ($http_cookie ~* "some-cookie") { #removing headers that stop Cloudflare cloudflare from caching more_clear_headers 'Pragma'; more_clear_headers 'Expires'; more_clear_headers 'Cache-Control'; add_header Cache-Control "no-cache, no-store, max-age=0"; } location ~* "(!?.*some-url-path.*)" { #removing headers that stop Cloudflare cloudflare from caching more_clear_headers 'Pragma'; more_clear_headers 'Expires'; more_clear_headers 'Cache-Control'; add_header Cache-Control "max-age=3600"; }</code>
Apache用戶會在他們的.htaccess文件中添加類似這樣的內容:
<code><ifmodule> mod_headers.c></ifmodule> Header unset Pragma env=LONGCACHE Header unset Expires env=LONGCACHE Header set Cache-Control "max-age=3600" env=LONGCACHE</code>
顯然,上面的some-cookie和some-url-path需要替換為正確的數值。這些規則對於下面提到的頁面緩存也是必需的。
我們可以選擇壓縮我們的CSS、JS和HTML。有一個選項可以利用AMP進行傳出的AMP鏈接。還有一個beta功能Rocket Loader,它使用瀏覽器的本地存儲異步捆綁和提供JS。但是,要小心這一點,因為加載資源順序中的小錯誤可能會破壞您的網站。
付費客戶可以使用Railgun功能,該功能解決了緩存系統的主要痛點——動態內容。它試圖加快從源服務器交付動態內容的速度。它需要在源服務器上安裝軟件,並通過壓縮交付的內容和“為多個同時請求維護單個持久連接,消除網絡連接延遲”來工作。這讓人想起HTTP/2協議的多路復用功能——只是在這裡,在源服務器和Cloudflare之間。
Pro計劃還有圖像壓縮/優化,以及波蘭語和Mirage機制。在“流量”選項卡下,有跨Cloudflare全球數據中心的Argo路由優化和負載平衡選項。
全頁HTML緩存
全頁緩存意味著緩存我們系統的全部輸出——CMS、應用程序、博客系統或任何其他內容。
在“頁面規則”下,有一個隱藏的寶石,可以將您的Cloudflare帳戶轉換為一個完整的緩存系統,可以與Varnish等專業解決方案競爭——並且由於全球數據中心——可能超過它。
將緩存級別規則設置為緩存所有內容將緩存網站的整個HTML內容以及所有其他資源。
通過對這些規則進行排序,我們可以實現複雜的緩存/排除解決方案,並以最小的延遲交付甚至動態生成的內容。 15倍的首次字節時間(TTFB)改進並非聞所未聞。
這些規則支持通配符,需要按優先級排序:
<code>header('Cache-Control: max-age=3600');</code>
如果我們將此規則與下一個圖像中的Bypass設置結合使用,我們可以區分需要在不同條件下緩存/從緩存中省略的網站部分——例如管理部分等。
如果頁面緩存正在工作,我們應該在瀏覽器檢查器的響應標頭中看到CF-Cache-Status: HIT。
付費客戶有其他緩存選項,或者根據cookie繞過緩存。在這裡,cookie名稱可以使用通配符設置,內容也可以根據設備類型進行緩存。
這些規則更複雜,並非每種類型的網站都需要。免費客戶可以使用三個頁面規則,但可以購買額外的規則。
HTTP/2和服務器推送
默認情況下,免費和企業客戶都可以使用HTTP/2——對HTTP/1.1協議的重大改進——其中包括:
雖然認識到需要根據具體情況來判斷Cloudflare的改進和價值,但公平地說,總的來說,Cloudflare提供的價值(特別是其免費層)穩固地高於平均水平。
結論
本文介紹瞭如何使用和配置Cloudflare與網站,使其快速、可靠且防DDoS。這並不是說CDN網站是不可滲透的。事實上,它帶來了新的漏洞。
當人為錯誤導致Cloudflare服務在2016年瑞典Telia網絡提供商案例中受損時,這對歐洲互聯網來說是一個重大問題。據估計,全球排名前100萬的網站中有6.2%使用Cloudflare服務。
無論如何,我們不應該因為這樣的事件而害怕CDN。它們很少見,最終有助於構建一個更加強大的網絡。
關於使用Cloudflare使您的網站更快更安全的常見問題解答
Cloudflare是一家網絡基礎設施和網站安全公司,提供內容交付網絡服務、DDoS緩解、互聯網安全和分佈式域名服務器服務。它的工作原理是保護和加速任何在線網站。一旦您的網站成為Cloudflare社區的一部分,其網絡流量就會通過其智能全球網絡進行路由。它們會自動優化網頁的交付,以便您的訪問者獲得最快的頁面加載時間和最佳性能。
Cloudflare通過其內容交付網絡 (CDN) 增強網站的速度。 CDN是位於世界各地的服務器網絡,緩存網站的靜態內容,例如圖像和CSS/JavaScript文件。當用戶訪問您的網站時,靜態內容會從最近的CDN服務器交付,從而減少加載時間。
Cloudflare保護您的網站免受各種威脅,包括SQL注入、DDoS攻擊和跨站點腳本攻擊。它使用一系列安全技術,包括Web應用程序防火牆 (WAF)、安全SSL和全球CDN來保護您的網站。
Cloudflare提供一系列計劃以滿足不同的需求。這些包括免費計劃、專業計劃、商業計劃和企業計劃。每個計劃都提供不同的功能和支持級別,企業計劃提供最全面的功能集。
Cloudflare的圖像優化功能(稱為Polish)會減小圖像的文件大小,以提高頁面加載時間。它提供兩種模式:無損模式,在不更改圖像的情況下減小文件大小;有損模式,通過刪除一些圖像數據來減小文件大小。
Cloudflare的移動優化(稱為Mirage)旨在提高您的網站在移動設備上的性能。它通過延遲加載圖像、合併網絡連接以及根據設備提供適當大小的圖像來實現此目的。
設置Cloudflare包括創建一個Cloudflare帳戶,將您的網站添加到帳戶,並將域的域名服務器更新為指向Cloudflare。完成此操作後,Cloudflare將開始緩存您的網站並從其CDN提供服務。
“始終在線”是一項功能,即使您的源服務器出現故障,它也能使您的網站緩存版本保持在線。這意味著即使您的託管提供商存在問題,訪問者仍然可以訪問您的網站。
Cloudflare的SSL/TLS加密保護數據在您的網站和訪問者之間移動時的安全。這可以防止第三方攔截和讀取數據,從而增強網站的安全性。
Argo智能路由是一項功能,它通過使用Cloudflare的專用網絡通過最不擁塞和最可靠的路徑路由訪問者來提高網站的性能。這可以減少互聯網延遲和數據包丟失,從而改善用戶體驗。
所有圖片均保留原始格式和位置。
以上是使您的網站更快,更安全地使用Cloudflare的詳細內容。更多資訊請關注PHP中文網其他相關文章!