如何解決Cloudflare加速網站出現Error 520未知錯誤

錯誤型別:
伺服器錯誤
錯誤名稱:
Cloudflare 520错误
英文名稱:
Error 520
錯誤描述:
当您网站的访问者在他们的浏览器中看到Error 520时,这意味着Cloudflare正在发送消息,因为您的服务器返回了一个空的、未知的或意外的响应。

如何解決Cloudflare加速網站出現Error 520未知錯誤

當您網站的訪問者在他們的瀏覽器中看到Error 520時,這意味著Cloudflare正在傳送訊息,因為您的伺服器返回了一個空的、未知的或意外的響應。

Error 520可以通過首先進行故障排除來找到原因,然後按照這些步驟進行修復。

  1. 對Error 520進行故障排除
  2. Error 520的常見原因
  3. 再次啟用Cloudflare
  4. 如果其他方法都失敗了怎麼辦

對Error 520進行故障排除

由於Error 520是由於您的伺服器出現問題而出現的,您可以通過檢視錯誤日誌來解決該問題。

網站Error 520的示例

網站Error 520的示例

禁用Cloudflare

在開始故障排除之前,有必要禁用Cloudflare。這有助於隔離問題,確保可以在不影響Cloudflare的情況下複製問題。

第1步:首先登入Cloudflare。然後,在列表中找到您的站點並單擊它。

單擊您列出的站點

單擊您列出的站點

第2步:接下來,單擊DNS選項卡,然後單擊表中Proxy status部分下的橙色雲。您會知道Cloudflare已被禁用,因為雲會變成灰色。

單擊橙色雲以禁用Cloudflare

單擊橙色雲以禁用Cloudflare

暫停Cloudflare

或者,您可以選擇在登入後暫停Cloudflare。

第1步:從列表中單擊您連線的站點。

登入後從列表中單擊您的站點

登入後從列表中單擊您的站點

第2步:然後,向下滾動,直到在側欄中看到“Advanced Actions”部分。單擊在站點上Pause Cloudflare on Site連結。

單擊連結以暫停Cloudflare

單擊連結以暫停Cloudflare

第3步:頁面上將顯示一個彈出視窗,要求您確認要暫停Cloudflare。繼續並單擊“Confirm按鈕。

單擊確認以暫停Cloudflare

單擊確認以暫停Cloudflare

進入開發模式

如果您不想暫停或禁用Cloudflare,您可以保持執行,但將其置於開發模式,以便您仍然可以對Error 520進行故障排除。

第1步:登入Cloudflare後,單擊頁面頂部的Caching選項卡。

轉到快取選項卡 轉到快取選項卡

第2步:接下來,向下滾動到“Development Mode部分,然後單擊“Off切換按鈕,切換至“On”。

通過單擊切換按鈕開啟開發模式

通過單擊切換按鈕開啟開發模式

檢查伺服器的錯誤日誌

現在您已禁用、暫停或將Cloudflare置於開發模式,您可以通過檢查伺服器的錯誤日誌來解決Error 520。

查詢錯誤日誌的方式因主機而異,因此如果您不確定在哪裡可以找到錯誤日誌,請與您的主機聯絡。

如果您的託管服務提供商使用cPanel,您可以按照以下步驟操作。

第1步:登入cPanel並在儀表板中,轉到“Metrics部分。然後,單擊Errors按鈕。

單擊Metrics下的Errors按鈕

單擊Metrics下的Errors按鈕

第2步:錯誤日誌頁面按時間倒序顯示錯誤以及最多300條最新訊息。如果您或您的主機調整了設定,錯誤日誌可能會顯示更多訊息。

檢視cPanel的錯誤日誌以解決Error 520

檢視cPanel的錯誤日誌以解決Error 520

使用寶塔面板檢查Error 520日誌

如果您使用寶塔面板管理WordPress網站,您可以按照以下步驟檢查您的錯誤日誌。

第1步:登入寶塔面板並單擊左側選單中的安全管理-Web日誌管理

寶塔日誌管理

寶塔日誌管理

第2步:下載nginx_error.log檔案,使用文字編輯器開啟將會會顯示錯誤日誌。如果您沒有看到任何列出的內容,那是因為您的網站上沒有發生錯誤。

如何解釋錯誤日誌

錯誤日誌中的每條訊息都有一個結構。如果您理解它,您就可以解釋出現的錯誤訊息。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
[Fri Oct 11 17:00:30 2019] [error] [client 123.4.56.7] error description: /path/to/file/with/error
[Fri Oct 11 17:00:30 2019] [error] [client 123.4.56.7] error description: /path/to/file/with/error
[Fri Oct 11 17:00:30 2019] [error] [client 123.4.56.7] error description: /path/to/file/with/error

訊息的日期和時間首先列出,然後是LogLevel指令,它告訴您訊息的嚴重性級別。

接下來是客戶端的IP地址。這就是讓這個問題出現的人。

最後,將顯示實際訊息,其中可能包含受影響檔案的路徑。

以下是可能在錯誤日誌訊息中列出的LogLevel嚴重性級別:

  • Emerg – 這讓您知道問題是緊急情況並且伺服器不可用。
  • Alert – 如果您看到此級別,應立即採取行動。
  • Crit – 這表示危急情況。
  • Error– 這意味著發生了錯誤。
  • Warn– 具有此級別的訊息是關於需要您注意但不重要的問題的警告。
  • Notice– 這意味著您的伺服器是正常的,但有關於您的伺服器可用狀況的重要詳細資訊。
  • Info– 此級別提供一般資訊。
  • Debug– 這些訊息包含啟用除錯時的詳細資訊。

使用cURL命令對錯誤520進行故障排除

您還可以使用cURL命令通過針對源伺服器進行測試來解決錯誤520。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
curl -vso /dev/null --user-agent "Mozilla 5.0" -H "Host: your-site.com" http://123.45.6.789/wp-login.php
curl -vso /dev/null --user-agent "Mozilla 5.0" -H "Host: your-site.com" http://123.45.6.789/wp-login.php
curl -vso /dev/null --user-agent "Mozilla 5.0" -H "Host: your-site.com" http://123.45.6.789/wp-login.php

請務必將“you-site.com”更改為您的實際域。您還需要使用您站點的IP地址更新“123.45.6.789”。如果您更改了登入頁面,您還應該更改“wp-login.php”部分。

成功的響應標頭類似於以下示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
* Hostname was NOT found in DNS cache
* Trying 123.45.6.789...
* Connected to 123.45.6.789 (123.45.6.789) port 80 (#0)
> GET /login HTTP/1.1
> User-Agent: Mozilla 5.0
> Accept: */*
> Host: your-site.com
>
< HTTP/1.1 200 OK
< Content-Type: text/html
< Date: Day, DD, Month Year Hour:Minute:Second Timezone
{ [12345 bytes data]
* Connection #0 to host 123.45.6.789 left intact
* Hostname was NOT found in DNS cache * Trying 123.45.6.789... * Connected to 123.45.6.789 (123.45.6.789) port 80 (#0) > GET /login HTTP/1.1 > User-Agent: Mozilla 5.0 > Accept: */* > Host: your-site.com > < HTTP/1.1 200 OK < Content-Type: text/html < Date: Day, DD, Month Year Hour:Minute:Second Timezone { [12345 bytes data] * Connection #0 to host 123.45.6.789 left intact
* Hostname was NOT found in DNS cache
*   Trying 123.45.6.789...
* Connected to 123.45.6.789 (123.45.6.789) port 80 (#0)
> GET /login HTTP/1.1
> User-Agent: Mozilla 5.0
> Accept: */*
> Host: your-site.com
>
< HTTP/1.1 200 OK
< Content-Type: text/html
< Date: Day, DD, Month Year Hour:Minute:Second Timezone
{ [12345 bytes data]
* Connection #0 to host 123.45.6.789 left intact

如果您看到類似的內容,則表示一切正常,並且訪問該站點時沒有出現錯誤520響應。

另一方面,如果您看到類似於以下示例的響應標頭,則表示在Cloudflare處於活動狀態時發生了520錯誤:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
* Hostname was NOT found in DNS cache
* Trying 123.45.6.789...
* Connected to 123.45.6.789 (123.45.6.789) port 80 (#0)
> GET /login HTTP/1.1
> User-Agent: Mozilla 5.0
> Accept: */*
> Host: your-site.com
>
* Empty reply from server
* Connection #0 to host 123.45.6.789 left intact
* Hostname was NOT found in DNS cache * Trying 123.45.6.789... * Connected to 123.45.6.789 (123.45.6.789) port 80 (#0) > GET /login HTTP/1.1 > User-Agent: Mozilla 5.0 > Accept: */* > Host: your-site.com > * Empty reply from server * Connection #0 to host 123.45.6.789 left intact
* Hostname was NOT found in DNS cache
*   Trying 123.45.6.789...
* Connected to 123.45.6.789 (123.45.6.789) port 80 (#0)
> GET /login HTTP/1.1
> User-Agent: Mozilla 5.0
> Accept: */*
> Host: your-site.com
>
* Empty reply from server
* Connection #0 to host 123.45.6.789 left intact

如何生成HAR檔案

HAR是一個HTTP存檔檔案。它包含傳送到源伺服器以及通過Cloudflare的請求的檔案。

它可以幫助您進行故障排除,因為當它用作代理時,它會比較來自源伺服器和Cloudflare的響應標頭。

如果這就是錯誤520出現的原因,它還用於確認標題太大。

您可以通過以下步驟使用瀏覽器建立HAR檔案:

Chrome

第1步:開啟瀏覽器並右鍵單擊該頁面。然後,選擇Inspect

在Chrome中右鍵單擊並選擇檢查

在Chrome中右鍵單擊並選擇檢查

第2步:面板開啟後,單擊“網路”選項卡並確保面板左側頂部有一個紅色圓圈按鈕。如果它是灰色的,請單擊它。

確保“網路”選項卡上的錄製按鈕為紅色

確保“網路”選項卡上的錄製按鈕為紅色

第3步:選中記錄按鈕旁邊的保留日誌選項,然後單擊清除按鈕。

選擇保留日誌的選項,然後單擊以清除以前的訊息

選擇保留日誌的選項,然後單擊以清除以前的訊息

第4步:載入出現錯誤520的頁面。然後,右鍵單擊Chrome開發人員工具的訊息區域中的任意位置。

選擇Save as HAR with Content並將檔案儲存到您的計算機。

將HAR檔案儲存到您的計算機

將HAR檔案儲存到您的計算機

火狐

第1步:開啟Firefox並右鍵單擊頁面上的任意位置。然後,選擇Inspect Element

右鍵單擊頁面後選擇檢查元素

右鍵單擊頁面後選擇檢查元素

第2步:轉到“網路”選項卡並訪問出現 520 錯誤的頁面。右鍵單擊面板中的訊息並選擇Save All as HAR選項。

將檔案儲存到您的計算機。

右鍵單擊並選擇儲存HAR檔案

右鍵單擊並選擇儲存HAR檔案

Edge 

第1步:開啟Edge瀏覽器並右鍵單擊該頁面。從列表中選擇檢查

在瀏覽器中右鍵單擊後選擇檢查

在瀏覽器中右鍵單擊後選擇檢查

第2步:轉到“網路”選項卡並確保圓形記錄按鈕為紅色。如果不是,請單擊它。檢查保留日誌選項,然後清除當前訊息的圖示。

單擊以保留日誌並清除舊訊息

單擊以保留日誌並清除舊訊息

第3步:轉到您遇到錯誤520的頁面。然後,右鍵單擊開發人員工具面板中的訊息,並選擇“將所有內容另存為HAR”選項。

將檔案儲存到您的計算機。

Safari

第1步:開啟Safari並右鍵單擊Windows的頁面或按鍵盤上的CMD並單擊Mac。從列表中選擇檢查元素

右鍵單擊頁面後選擇檢查元素選項

右鍵單擊頁面後選擇檢查元素選項

第2步:轉到網路選項卡。選中“保留日誌”選項,然後轉到出現錯誤520問題的頁面。

在“網路”選項卡上選中保留日誌的選項

在“網路”選項卡上選中保留日誌的選項

第3步:單擊匯出按鈕並將HAR檔案儲存到您的計算機。

匯出HAR檔案

匯出HAR檔案

解決錯誤520的常見原因

現在您有了錯誤日誌,請搜尋它,看看您是否注意到以下任何一個問題。然後,按照以下步驟解決問題。

源伺服器PHP應用程式崩潰

導致錯誤520的一個常見問題是PHP應用程式之一在您的伺服器上崩潰。重新啟動PHP將修復錯誤。

使用SSH,您可以為Apache伺服器輸入以下命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
apache2ctl restart
apache2ctl restart
apache2ctl restart

對於Nginx伺服器,您可以使用以下命令重新啟動PHP:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
service nginx restart
service nginx restart
service nginx restart

Cloudflare IP地址未列入白名單

可能發生520錯誤的另一個原因是Cloudflare的IP地址未列入白名單。您可以將它們列入白名單,但託管服務提供商之間的步驟有所不同。

如果您不確定如何將IP列入白名單,請聯絡您的主機,尤其是當您沒有找到任何設定時。

TCP空閒超時少於300秒

傳輸控制協議 (TCP) 也可能是錯誤520的原因。

TCP是一種標準協議,用於建立和維護網路連線。如果TCP設定在300秒內超時,可能會導致520錯誤彈出。

您可以使用CLI命令更改TCP服務超時:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
set service Service-HTTP-1 -svrTimeout 500
set service Service-HTTP-1 -svrTimeout 500
set service Service-HTTP-1 -svrTimeout 500

標題超過8KB

此問題通常是由於cookie過多或cookie過大造成的。您在故障排除過程中下載的HAR檔案將顯示這是否是問題所在。

Cloudflare有可用於標頭8KB的限制。

如果您編寫的外掛需要太多cookie或cookie中有太多資料,請嘗試減少它們。或者,如果您使用了很多都需要cookie的外掛,請刪除其中的一些。

來自您的伺服器的空響應

當您的站點缺少HTTP狀態程式碼或響應正文時會出現此問題。要解決此問題,請確保為您站點的域正確設定DNS

檢查您的設定所涉及的步驟取決於您的DNS主機。如果您的託管計劃捆綁了DNS,請諮詢您的託管服務提供商。

請務必注意,如果您更新了DNS設定,您的站點可能需要長達72小時才能傳播。這意味著您的網站最多可能有三天不可用。

更改DNS設定後,您需要清除站點的快取。如果您的WordPress站點上安裝了快取外掛,並且不確定如何從外掛設定中清除站點快取,則可以檢視其文件。

您還可以通過您的託管服務提供商清除您網站的快取。如果您需要知道如何為您的網站執行此操作,請務必與他們聯絡。

如果您更新了DNS設定,您的站點再次可用,您清除了站點的快取,但仍然遇到錯誤520,請重新啟動伺服器。

缺少響應頭

根據Mozilla的說法

“響應標頭是一個HTTP標頭,可以在HTTP響應中使用,並且與訊息的內容無關。響應標頭,如Age,Location或Server ,用於提供更詳細的響應上下文。”

丟失響應頭的原因有很多。

解決此問題的最佳選擇是使用Fiddler之類的除錯工具來除錯問題並準確檢視問題所在,以便您可以修復它。

伺服器未返回正確的HTTP錯誤響應

當您的伺服器傳送無效的錯誤響應時,它可能會導致 520 錯誤。這意味著該訊息不符合HTTP響應程式碼的標準列表

它是由您的伺服器引起的,也可能是您伺服器上的某些內容,例如 PHP 應用程式或 WordPress 網站上使用的外掛。

如果您找不到錯誤程式碼的來源來修復它,請嘗試聯絡支援以獲得進一步的幫助。

再次啟用Cloudflare

檢查您是否再次收到錯誤訊息。如果這樣做,請禁用Cloudflare並繼續進行故障排除。

如果520 error已解決,請再次啟用Cloudflare。

第1步:為此,請登入Cloudflare,如果您通過將帳戶中的雲變為灰色來禁用Cloudflare,請首先從列表中選擇您的站點。

選擇要啟用Cloudflare的站點

選擇要啟用Cloudflare的站點

第2步:單擊DNS選項卡,然後單擊灰色雲以重新啟用Cloudflare。

單擊灰色的雲以啟用Cloudflare

單擊灰色的雲以啟用Cloudflare

暫停後恢復Cloudflare

第1步:如果您之前暫停了Cloudflare,請通過登入Cloudflare 並單擊儀表板中列出的站點來恢復它。

選擇您需要恢復Cloudflare 的站點

選擇您需要恢復Cloudflare的站點

第2步:然後,轉到“Overview”選項卡並向下滾動到頁面底部,直到您在頁面右側的側欄中看到“Advanced Actions”部分。

單擊Enable Cloudflare on Site連結。

再次單擊啟用Cloudflare的連結

再次單擊啟用Cloudflare的連結

關閉開發模式

第1步:如果您之前已開啟Cloudflare的開發模式,您可以通過登入將其關閉。然後,單擊頁面上列出的您的站點。

選擇您的網站

選擇您的網站

第2步:接下來,轉到Caching選項卡。

單擊Caching選項卡

單擊Caching選項卡

第3步:向下滾動到“Development Mode部分,然後單擊當前設定為“On”的切換按鈕。

單擊切換以禁用開發模式

單擊切換以禁用開發模式

如果其他方法都失敗了怎麼辦

如果您仍然看到問題,請聯絡Cloudflare支援。

向他們提供以下詳細資訊:

  • 發生錯誤時所請求資源的完整URL。
  • Cloudflare的Ray ID,來自您看到error 520訊息的頁面。
  • http://your-site.com/cdn-cgi/trace的輸出,但請務必將“your-site.com”替換為您的實際域名。
  • 兩個HAR檔案:一個來自為您的站點啟用Cloudflare時的檔案,另一個來自您禁用Cloudflare時的檔案。

小結

error 520似乎令人困惑,尤其是因為它是Cloudflare錯誤。但是,這與導致Cloudflare無法連線的伺服器錯誤有關。

上述步驟是最常見的錯誤520原因的解決方案。如果您在嘗試後仍然遇到問題,您可能需要聯絡Cloudflare或您的託管支援。

注:如果您使用了百度雲加速等類似的CDN服務,同樣有可能出現error 520。您可以依據上述的解決方案作為參考,進行故障排查及修復。

評論留言