如何解決WordPress網站的Cloudflare返回521錯誤

錯誤型別:
伺服器錯誤
錯誤名稱:
Cloudflare 521错误
英文名稱:
Error 521
錯誤描述:
由于Cloudflare无法连接到您的站点,因此无法向访问者显示您的站点,而是显示521错误消息。

如何解決WordPress網站的Cloudflare返回521錯誤

在WordPress網站上使用Cloudflare等內容交付網路 (CDN)可以幫助您大幅減少載入時間。但是,您可能偶爾會遇到Cloudflare特定的問題,例如“521錯誤”。此特定錯誤會阻止平臺連線到您的網站,這意味著您可能也無法訪問網站。

在本文中,我們將討論Cloudflare反饋521錯誤是什麼以及導致它的原因。然後我們將介紹三種方法來修復它。

Cloudflare的521錯誤是什麼?

像Cloudflare這樣的CDN將您網站的快取副本儲存在位於全球各地的伺服器網路上。當訪問者嘗試訪問您的網站時,Cloudflare 會“攔截”該連線並從最接近其位置的伺服器載入快取副本。這種方法通常會加快載入速度,同時降低站點主伺服器的工作量。

正如您在上面瞭解到的,521錯誤訊息是特定於Cloudflare的錯誤訊息。

從本質上講,這意味著您的Web瀏覽器能夠成功連線到Cloudflare,但Cloudflare無法連線到源Web伺服器 – 也就是您的WordPress站點的伺服器。

具體來說,Cloudflare嘗試連線到您的WordPress站點的伺服器,但收到連線拒絕錯誤作為響應。

由於Cloudflare無法連線到您的站點,因此無法向訪問者顯示您的站點,而是顯示521錯誤訊息:

error-521

預設情況下,Cloudflare會告訴您它無法連線到網站的伺服器,因為該伺服器已關閉。但是,CDN可能無法連線到您的站點還有其他幾個潛在原因。

在我們討論這些原因之前,重要的是要注意521錯誤不是特定於WordPress的。無論您使用什麼內容管理系統 (CMS)以及在外部網站上,您都可能遇到此錯誤。但是,您使用WordPress的事實為您提供了一種解決問題的額外方法,我們將在後面詳細介紹。

什麼導致Cloudflare返回521錯誤

正如我們之前提到的,當Cloudflare無法與您網站的伺服器建立連線時,會發生521錯誤。通常,發生這種情況是由於以下三個原因之一:

  1. 您網站伺服器已關閉。即使其他一切配置正確,如果您的WordPress站點的伺服器處於離線狀態,Cloudflare也將無法連線。如果您使用的是信譽良好的WordPress伺服器主機,您應該擁有近乎完美的正常執行時間率(大約 99.9%)。這意味著在大多數情況下,伺服器停機不是521錯誤背後的根本原因。
  2. 您伺服器可能阻止Cloudflare請求。 您的Web伺服器可能執行良好,但由於某種原因阻止了Cloudflare的請求。由於Cloudflare的工作方式,某些伺服器端安全解決方案可能會無意中攔截Cloudflare的IP地址。比如,一些防火牆會阻止他們認為可疑的 IP,而Cloudflare請求可能會被該網路捕獲。因為Cloudflare是一個反向代理,所以進入您的源伺服器的所有流量看起來都好像來自一小範圍的Cloudflare IP(而不是每個訪問者的唯一IP地址)。因此,一些安全解決方案會將來自有限數量IP地址的高流量視為攻擊並阻止它們。
  3. 您的Cloudflare證書有問題。Cloudflare 可以使用自己的安全套接字層 (SSL) 證書對您的網站與其伺服器之間的流量進行加密。如果該證書有問題,源伺服器可能會拒絕連線。

這似乎有很多潛在的領域需要覆蓋。但是,在故障排除過程中,大多數這些原因很容易排除,我們將在下一節中討論。

如何修復Cloudflare返回521錯誤

現在我們已經介紹了基礎知識,我們將向您介紹如何解決WordPress中的Cloudflare返回的521錯誤。我們將逐步完成整個過程,首先排除最常見的原因(也是最容易修復的)。讓我們從檢查您網站的伺服器是否已關閉開始。

1. 查明您站點的伺服器是否停機

在信譽良好的託管服務提供商中,伺服器停機是相當罕見的。許多提供商都吹噓近乎完美的正常執行時間。因此,除非您使用的是不可靠的 Web 主機,否則您可以將其排除為521錯誤的根源。

在繼續之前,您需要確保您的WordPress站點的伺服器線上且執行正常。如果不是,則深入研究進一步的故障排除步驟是沒有意義的。

但是,確保這不是問題仍然是一個好主意,特別是如果您不熟悉當前的託管服務提供商。如果由於錯誤521而無法訪問您的網站,還有其他方法可以檢查它是否線上。例如,您可以在命令終端中使用ping 命令無論您使用的是哪種作業系統 (OS),它都應該可以工作。

Ping命令執行一個簡單的測試,以確定伺服器是否可達,並確保你沒有任何連線問題。例如,這裡我們正在為Google.com執行一個簡單的ping 測試(通過輸入“ping google.com”):

ping-google-1

如果您收到來自伺服器的回覆,則它已啟動並可訪問。

檢視伺服器是否關閉的另一種方法是使用免費的線上服務,例如IsItDownRightNow?這個工具可以讓你輸入任何你想要的URL,並檢查它是否可以訪問:

is-google-up-1

你還可以執行cURL命令。如果您使用的是Mac或Linux,則可以直接從終端執行它。

Windows預設沒有安裝cURL,雖然您可以安裝它,但更簡單的方法是使用KeyCDN的線上HTTP標頭檢查工具

您所做的只是插入http://1.2.3.4,其中1.2.3.4是您伺服器的實際IP地址。

KeyCDN標頭檢查工具

KeyCDN標頭檢查工具

如果您的伺服器已啟動,您應該會看到HTTP 200響應。或者,您也可能看到404 Not Found,這也意味著網路伺服器已啟動(只是沒有與該IP關聯的頁面):

成功連線的示例

成功連線的示例

如果出現問題,您會看到類似Host Not FoundFailed to connect的資訊:

您的伺服器出現問題的示例

您的伺服器出現問題的示例

如果服務說該網站已啟動,那麼您就可以開始了。這意味著您的521錯誤的原因在於其他地方。如果您的伺服器由於某種原因停機,您需要與您的託管服務提供商聯絡以找出原因。

2. 移除 Cloudflare 和您網站之間的攔截

如果您的網站線上,錯誤 521 可能是由於錯誤配置導致 Cloudflare 無法訪問您的網站檔案。

問題可能出在您的 .htaccess 檔案、IP Blocker 規則或安全外掛中。讓我們看看如何逐一修復。

2.1 將Cloudflare IP範圍列入白名單

您可以嘗試的下一個修復是確保您的伺服器的防火牆知道讓Cloudflare請求通過。根據您使用的託管計劃型別,您可能無法手動更改伺服器的配置。例如,在大多數共享和託管計劃中,您將無法修改伺服器的防火牆設定。

如果您使用的是非託管虛擬專用伺服器 (VPS)或專用伺服器,您應該擁有對必要選項的完全訪問許可權。如果您使用防火牆,則可以修改其設定並將Cloudflare的IP範圍列入白名單

您需要確保沒有在.htaccessiptables或防火牆中阻止這些IP地址。而且您還需要確保您的託管服務提供商不會限制或阻止來自Cloudflare IP地址的IP請求。如果您不確定如何執行此操作,請聯絡您的主機支援人員。

或者,您可以聯絡您的託管服務提供商,讓他們檢查伺服器的防火牆是否阻止了Cloudflare的任何地址。由於CDN的流行,情況不應該是這樣。但是,您的網路託管服務商的支援團隊將能夠給您一個明確的答案。

下面介紹如何在伺服器配置中將 IP 地址列入白名單:

1. 通過 FTP 客戶端或使用 cPanel 中的檔案管理器開啟 .htaccess 檔案。

開啟 .htaccess 檔案

2. 新增以下程式碼:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
order deny, allow
deny from all
order deny, allow deny from all
order deny, allow
deny from all

3. 從 [Cloudflare IP 地址] 新增允許。將 [Cloudflare IP 地址] 替換為每行中的一個實際 IP 地址,如下圖所示。

允許Cloudflare的IP地址

4. 儲存 .htaccess 檔案。

2.2 檢查 IP Blocker 設定

如果您使用的是基於 cPanel 的主機,IP Blocker 可以幫助您從特定 IP 地址或 IP 地址範圍阻止您的網站。

檢視 IP Blocker 設定,確保管理員沒有錯誤地新增 Cloudflare IP 範圍。

IP Blocker

2.3 禁用您的安全外掛

您的安全或防火牆外掛有可能阻止了 Cloudflare 請求。要排除這種可能性,請禁用該外掛,看看是否能解決錯誤 521。如果可以,請聯絡外掛開發人員或更換安全外掛。

3. 設定Cloudflare Origin 證書

Cloudflare使您能夠配置CDN應如何處理 SSL 證書。它為您提供了多種SSL模式選項,包括:

  • Flexible。在此模式下,Cloudflare 將使用 HTTP 連線到您的網站。理想情況下,除非您尚未為網站設定 SSL 證書,否則不應使用此模式。
  • Full。此模式讓使用者決定是使用HTTP還是HTTPS連線您的網站。但是,如果他們使用HTTPS,Cloudflare將不會驗證您網站的證書。
  • Strict。此模式還使訪問者能夠決定使用哪種協議。但是,它會告訴Cloudflare檢查您網站證書的有效性。

SSL模式選項

如果您的證書存在導致521錯誤的問題,通常會在您使用 Full (strict) 模式時發生。這是因為Cloudflare還需要在其末端使用原始證書來加密與您網站的流量。

如果您網站的 SSL 證書過期、自簽名或與域名不匹配,Cloudflare 就會切斷連線。在這種情況下,您的訪客將在瀏覽器中看到錯誤 521。

您可能需要在伺服器上安裝 Cloudflare 起源證書頒發機構 (CA) 證書來解決這個問題。您可以通過導航至 [yourwebsite.com] > SSL/TLS > Origin server 並單擊 Create certificate 來獲取 Cloudflare Origin CA 證書。

Origin server

之後,您可以按照託管服務提供商的指示,將 Cloudflare 起源證書新增到您的網站伺服器上。

生成Cloudflare源證書很簡單,一旦你這樣做了,你應該能夠訪問你的網站,而不會出現錯誤521。如果您站點的證書有問題,您將看到完全不同的錯誤程式碼(526錯誤)。

不過,如果你管理的是敏感資料或需要遵守 PCI-DSS 要求,最好還是使用高階 SSL 證書。

4. 檢視 Cloudflare DNS 設定

登入 Cloudflare 帳戶並導航至 [yourwebsite.com] > DNS > Records

然後,確保所有 A 記錄的內容都與源網站伺服器的 IP 地址相匹配,並且 CNAME 記錄的內容包含您網站的域名。

Cloudflare DNS

如果其中一條記錄不正確,您可以單擊 “Edit” 修改該記錄。

修改DNS設定

5. 停用 mod_reqtimeout 和 mod_antiloris

您可能在 Apache HTTP 伺服器上啟用了 mod_reqtimeoutmod_antiloris 模組,以防止拒絕服務(DoS)和分散式拒絕服務(DDoS)攻擊。這些模組通過限制 IP 伺服器與伺服器的連線次數,使網路伺服器免受這些攻擊。

雖然 mod_reqtimeout 和 mod_antiloris 可以保護您的託管伺服器,但它們可能與 Cloudflare 存在不相容問題。

例如,Cloudflare 依靠數量有限的 IP 地址來引導流量到您的伺服器,但這些模組可能會因為連續的連線嘗試而阻止這些地址。

6. 聯絡客戶支援

如果上述解決方案對您都不起作用,那麼是時候尋求外部幫助了。

如果您的網站在沒有 Cloudflare CDN 的情況下也能正常執行,請導航到 Support Contact Cloudflare 通過 “ticket”、”chat” 或 phone 獲取 Cloudflare 的支援。

如果網站託管伺服器出現故障,請聯絡網站託管提供商的支援團隊。

小結

如果您將Cloudflare與WordPress一起使用,您可能會遇到521錯誤。當Cloudflare無法與您網站的伺服器建立連線時,會出現此特定錯誤程式碼。這可能是因為伺服器已關閉、其防火牆阻止了Cloudflare,或者其SSL證書存在問題。

總而言之,您可以通過以下方式對Cloudflare中的521錯誤進行故障排除:

  1. 檢查您站點的伺服器是否已關閉。
  2. 配置您伺服器的防火牆以將Cloudflare IP範圍列入白名單。
  3. 設定Cloudflare源證書。

評論留言