最近使用cloudflare做網(wǎng)站的外圍cdn,出現(xiàn)過很多次5XX錯誤,匯總信息如下:

診斷并解決 Cloudflare 代理的站點(diǎn)的 5XX 錯誤。

本文內(nèi)容

  • [概述]
  • [錯誤分析]
  • [Error 500: internal server error]
  • [Error 502 bad gateway 或 Error 504 gateway timeout]
  • [Error 503: service temporarily unavailable]
  • [Error 520: web server returns an unknown error]
  • [Error 521: web server is down]
  • [Error 522: connection timed out]
  • [Error 523: origin is unreachable]
  • [Error 524: a timeout occurred]
  • [錯誤 525:SSL 握手失敗]
  • [Error 526: invalid SSL certificate]
  • [527 錯誤:Railgun Listener 至源站錯誤]
  • [Error 530]

概述

在排查 5XX 錯誤時,正確的操作步驟是先聯(lián)系您的主機(jī)提供商或站點(diǎn)管理員來排除故障并收集數(shù)據(jù)。

Cloudflare 支持僅協(xié)助域所有者解決問題。如果您是網(wǎng)站訪問者,請聯(lián)系網(wǎng)站所有者。

需要向主機(jī)提供商提供的錯誤詳情

  1. 具體的 5XX 錯誤代碼和消息
  2. 發(fā)生 5XX 錯誤的時間和時區(qū)
  3. 造成 HTTP 5XX 錯誤的 URL(例如:HTTPS://www.example.com/images/icons/image1.png

錯誤原因未必都能在源站錯誤日志中找到。請檢查 Cloudflare 和源站 Web 服務(wù)器之間的所有負(fù)載平衡器、緩存、代理或防火墻。

下方的各個錯誤描述中列出了應(yīng)向主機(jī)提供商或站點(diǎn)管理員提供的其他詳情。Cloudflare Custom Error Pages 可更改本文探討的默認(rèn)錯誤頁面的外觀。


錯誤分析

每個域的錯誤分析可在您的帳戶的支持門戶中獲得。通過錯誤分析,您可以按 HTTP 錯誤代碼深入了解總體錯誤情況,它還提供了診斷和解決問題所需的 URL、響應(yīng)、源站 IP 地址和 Cloudflare 數(shù)據(jù)中心。錯誤分析基于的是 1% 的流量樣本。

要查看錯誤分析:

  • 導(dǎo)航到 Cloudflare 支持門戶。請參閱關(guān)于提交支持票證的說明,了解如何訪問支持門戶。
  • 往下滾動到錯誤分析部分。
  • 點(diǎn)擊查看錯誤分析
  • 輸入要調(diào)查的域。
  • 此時將顯示一段時間內(nèi)的錯誤
  • 點(diǎn)擊圖表下方表格中的狀態(tài)代碼,展開流量錯誤詳情。

Error 500: internal server error

500 錯誤通常表示您的源站 Web 服務(wù)器存在問題。Error establishing database connection 是源站 Web 服務(wù)器生成的常見 HTTP 500 錯誤消息。聯(lián)系您的主機(jī)提供商來解決。

解決方案

向主機(jī)提供商提供詳細(xì)信息,協(xié)助對問題進(jìn)行故障排除。

不過,如果 500 錯誤的 HTML 響應(yīng)代碼中包含“cloudflare”或“cloudflare-Nginx”,請將以下信息提供給 Cloudflare 支持:

  1. 您的域名
  2. 發(fā)生 500 錯誤的時間和時區(qū)
  3. 觀察到 500 錯誤的瀏覽器的 www.example.com/cdn-cgi/trace 輸出(將 www.example.com 替換為您實(shí)際的域名和主機(jī)名)。

如果發(fā)現(xiàn)訪問您的網(wǎng)站時顯示空白頁,請確認(rèn)問題是否在暫停 Cloudflare 時發(fā)生,并聯(lián)系您的主機(jī)提供商尋求幫助。


Error 502 bad gateway 或 Error 504 gateway timeout

當(dāng) Cloudflare 無法與您的源站 Web 服務(wù)器建立聯(lián)系時,會發(fā)生 HTTP 502 或 504 錯誤。

可能的原因有兩種:

  • (最常見原因)502/504 源自您的源站 Web 服務(wù)器
  • 502/504 源自 Cloudflare

502/504 源自您的源站 Web 服務(wù)器

當(dāng)您的源站 Web 服務(wù)器標(biāo)準(zhǔn)的 HTTP 502 網(wǎng)關(guān)損壞或 504 網(wǎng)關(guān)超時錯誤響應(yīng)時,Cloudflare 將返回帶有 Cloudflare 標(biāo)志的 HTTTP 502 或 504 錯誤:

瀏覽器errconnectionrefused紫鳥超級瀏覽器插圖

解決方案

聯(lián)系您的主機(jī)提供商,在您的源站 Web 服務(wù)器上排查這些常見的原因:

  • 確保在請求生成生成 502 或 504 錯誤的訪問者 URL 中的主機(jī)名和域名時,源站服務(wù)器能夠響應(yīng)請求。
  • 調(diào)查服務(wù)器過載、崩潰或網(wǎng)絡(luò)故障。
  • 識別發(fā)生超時或被阻止的應(yīng)用程序或服務(wù)。

502/504 源自 Cloudflare

源自 Cloudflare 的 502 或 504 錯誤如下方所示:

瀏覽器errconnectionrefused紫鳥超級瀏覽器插圖1

如果錯誤未提及“cloudflare”,請聯(lián)系主機(jī)提供商來尋求與源自源站的 502/504 錯誤相關(guān)的幫助。

解決方案

為避免處理您的查詢時發(fā)生延遲,請向 Cloudflare 支持提供以下必要詳情:

  1. 發(fā)生問題的時間和時區(qū)
  2. 造成 HTTP 502 或 504 錯誤的 URL(例如:https://www.example.com/images/icons/image1.png
  3. 瀏覽 www.example.com/cdn-cgi/trace 時的輸出(將 www.example.com 替換為導(dǎo)致 HTTP 502 或 504 錯誤的域名和主機(jī)名)

Error 503: service temporarily unavailable

HTTP 錯誤 503 在源站 Web 服務(wù)器過載時發(fā)生。 可能的原因有兩種,可通過錯誤消息來辨別:

  • 錯誤的 HTML 響應(yīng)正文中不包含“cloudflare”或“cloudflare-nginx”。

解決方案:聯(lián)系您的主機(jī)提供商,以核實(shí)是否針對您的源站 Web 服務(wù)器的請求實(shí)施了速率限制。

  • 錯誤的 HTML 響應(yīng)正文中包含“cloudflare”或“cloudflare-nginx”。

解決方案:Cloudflare 數(shù)據(jù)中心中發(fā)生了連接問題。向 Cloudflare 支持提供以下信息:

  1. 您的域名
  2. 發(fā)生 503 錯誤的時間和時區(qū)
  3. 觀察到 503 錯誤的瀏覽器的 www.example.com/cdn-cgi/trace 輸出(將 www.example.com 替換為您實(shí)際的域名和主機(jī)名)。

Error 520: web server returns an unknown error

當(dāng)源站服務(wù)器向 Cloudflare 返回空白、未知或意外響應(yīng)時,會發(fā)生 520 錯誤。

解決方案

在進(jìn)一步調(diào)查 520 錯誤期間采用以下快速解決辦法:將 Cloudflare DNS 應(yīng)用中的記錄設(shè)為“僅限 DNS”,或暫停 Cloudflare。

聯(lián)系您的主機(jī)提供商或站點(diǎn)管理員,請他們核查您的源站 Web 服務(wù)器日志中的崩潰并檢查以下常見原因:

  • 源站 Web 服務(wù)器應(yīng)用程序崩潰
  • 您的源站上未允許 Cloudflare IP。
  • 標(biāo)頭超過 16 KB(通常因?yàn)?Cookie 數(shù)量過多)
  • 源站 Web 服務(wù)器的空響應(yīng)中缺少 HTTP 狀態(tài)代碼或響應(yīng)正文
  • 缺少響應(yīng)標(biāo)頭或源站 Web 服務(wù)器未返回
  • 正確的 HTTP 錯誤響應(yīng)
    • 在從上游讀取響應(yīng)標(biāo)頭時,上游過早地關(guān)閉了連接,這是我們在日志中可能注意到的一個常見錯誤。這表明源站 Web 服務(wù)器有問題,導(dǎo)致Cloudflare 生成 520 錯誤。

520 錯誤普遍發(fā)生于造成源站 Web 服務(wù)器崩潰的 PHP 應(yīng)用程序。

如果在聯(lián)系主機(jī)提供商或站點(diǎn)管理員后仍然出現(xiàn) 520 錯誤,請向 Cloudflare 支持提供以下信息:

  • 發(fā)生錯誤時所請求資源的完整 URL
  • 520 錯誤消息中的 Cloudflare cf-ray
  • 來自 http://www.example.com/cdn-cgi/trace 時的輸出(將 www.example.com 替換為您發(fā)生 520 錯誤時的您的域名和主機(jī)名)
  • 兩個
  • HAR 文件
    • 一個在您網(wǎng)站上啟用了 Cloudflare 時生成
    • 另一個在臨時禁用 Cloudflare 后生成。

Error 521: web server is down

源站 Web 服務(wù)器拒絕來自 Cloudflare 的連接時,會發(fā)生 521 錯誤。源站上的安全解決方案可能阻止了來自某些 Cloudflare IP 地址的合法連接。

521 錯誤的兩個最常見原因:

  • 源站 Web 服務(wù)器應(yīng)用程序離線
  • Cloudflare 請求被阻止

解決方案

聯(lián)系您的站點(diǎn)管理員或主機(jī)提供商以排除這些常見原因:

  • 確保您的源站 Web 服務(wù)器正常響應(yīng)
  • 查看源站 Web 服務(wù)器錯誤日志,以確定 Web 服務(wù)器應(yīng)用程序崩潰或中斷。
  • 確認(rèn)沒有阻止 Cloudflare IP 地址或?qū)ζ涫┘铀俾氏拗?/span>
  • 在您的源站 Web 服務(wù)器的防火墻或其他安全軟件中允許所有 Cloudflare IP 范圍
  • 確認(rèn)您是否將 SSL/TLS 模式設(shè)置為 FullFull (Strict),以及您是否安裝了 Cloudflare Origin 證書
  • 查找 Cloudflare 社區(qū)的更多故障排除信息。

Error 522: connection timed out

Cloudflare 聯(lián)系源站 Web 服務(wù)器時超時會發(fā)生 522 錯誤。 有兩種不同的錯誤導(dǎo)致 HTTP 錯誤 522,具體取決于 Cloudflare 和源站 Web 服務(wù)器之間發(fā)生超時的時間:

  1. 在連接建立之前,源站 Web 服務(wù)器未在 Cloudflare 發(fā)送 SYN 后 15 秒內(nèi)將 SYN + ACK 返回給 Cloudflare。
  2. 在連接建立之后,源站 Web 服務(wù)器未在 90 秒內(nèi)確認(rèn)(ACK)Cloudflare 的資源請求。

如果源站 Web 服務(wù)器在連接建立之后確認(rèn)(ACK)了資源請求,但沒有及時發(fā)送響應(yīng),則發(fā)生 HTTP 524 錯誤。

解決方案

聯(lián)系您的主機(jī)提供商,從源站 Web 服務(wù)器上排查下列常見原因:

  • (最常見).htaccessiptables 或防火墻中阻止了 Cloudflare IP 地址或?qū)ζ湓O(shè)置了速率限制。確認(rèn)您的主機(jī)提供商允許 Cloudflare IP 地址。
  • 源站 Web 服務(wù)器過載或離線,因而丟棄了傳入的請求。
  • 源站 Web 服務(wù)器上禁用了 Keepalives 功能。
  • Cloudflare DNS 應(yīng)用中的源站 IP 地址與主機(jī)提供商當(dāng)前為您的源站 Web 服務(wù)器置備的 IP 地址不匹配。
  • 您的源站 Web 服務(wù)器上丟棄了數(shù)據(jù)包。

如果您使用的是 Cloudflare Pages,請確認(rèn)您已經(jīng)設(shè)置了自定義域,并且您的 CNAME 記錄指向您的自定義 Pages 域。如需了解如何設(shè)置自定義 Pages 域,請點(diǎn)擊此處。

如果上述原因都未能促成解決方案,請向主機(jī)提供商或站點(diǎn)管理員索取以下信息,然后聯(lián)系 Cloudflare 支持:

  • 從源站 Web 服務(wù)器到發(fā)生問題前最常連接您的源站 Web 服務(wù)器的 Cloudflare IP 地址的 MTR 或 traceroute 結(jié)果。在源站 Web 服務(wù)器日志記錄的 IP 中,找到一個可成功連接的 IP。
  • 來自主機(jī)提供商調(diào)查的詳細(xì)信息,如相關(guān)的日志或與主機(jī)提供商的對話。

Error 523: origin is unreachable

當(dāng) Cloudflare 無法聯(lián)系您的源站 Web 服務(wù)器時,會發(fā)生 523 錯誤。這通常在 Cloudflare 和源站 Web 服務(wù)器之間的網(wǎng)絡(luò)設(shè)備沒有通向源站 IP 地址的路由時發(fā)生。

解決方案 聯(lián)系您的主機(jī)提供商,在您的源站 Web 服務(wù)器上排查下列常見原因:

  • 確認(rèn)您的 Cloudflare DNS 應(yīng)用中為 A 或 AAAA 記錄列出了正確的源站 IP 地址。
  • 對源站與 Cloudflare 之間的互聯(lián)網(wǎng)路由問題進(jìn)行故障排除,或者對源站本身的問題進(jìn)行故障排除。

如果主機(jī)提供商經(jīng)常更改該您的源站 Web 服務(wù)器 IP 地址,請參考有關(guān)動態(tài) DNS 更新的 Cloudflare 文檔。

如果上述原因都未能促成解決方案,請向主機(jī)提供商或站點(diǎn)管理員索取以下信息:

  • 從源站 Web 服務(wù)器到發(fā)生問題前最常連接您的源站 Web 服務(wù)器的 Cloudflare IP 地址的 MTR 或 traceroute 結(jié)果。從源站 Web 服務(wù)器日志查找一個可連接的 Cloudflare IP。
  • 如果您通過 Cloudflare 托管服務(wù)合作伙伴使用 Railgun,請聯(lián)系您的主機(jī)提供商來排查 523 錯誤。
  • 如果您自己管理 Railgun 安裝,請?zhí)峁┮韵滦畔ⅲ?/span>
    • 從 Railgun 服務(wù)器到源站 Web 服務(wù)器的 traceroute 結(jié)果。
    • 來自 Railgun 服務(wù)器的最新系統(tǒng)日志文件。

Error 524: a timeout occurred

524 錯誤表明 Cloudflare 成功連接了源服務(wù)器,但源站 Web 服務(wù)器沒有在默認(rèn)的 100 秒連接超時結(jié)束前提供 HTTP 響應(yīng)。如果源站服務(wù)器由于要做太多工作而花費(fèi)太長時間(例如,大數(shù)據(jù)查詢),或者因?yàn)榉?wù)器在爭搶資源而無法及時返回任何數(shù)據(jù),那么可能會發(fā)生這種情況。

解決方案

以下是我們建議的解決這一問題的方案:

  • 實(shí)施大型 HTTP 進(jìn)程的狀態(tài)輪詢,以避免遇到該錯誤。
  • 聯(lián)系您的主機(jī)提供商
  • ,從您的源站 Web 服務(wù)器上排查下列常見原因:
    • 源站 Web 服務(wù)器上長時間運(yùn)行的進(jìn)程。
    • 發(fā)生過載的源站 Web 服務(wù)器。

源站 Web 服務(wù)器上記錄請求響應(yīng)時間有助于辨別資源速度緩慢的原因。聯(lián)系您的主機(jī)提供商或站點(diǎn)管理員,以協(xié)助調(diào)整日志格式,或者搜索適用于您的 Web 服務(wù)器品牌(如 Apachenginx)的日志文檔。

  • Enterprise 客戶可以使用 proxy_read_timeout API 端點(diǎn)將 524 超時延長到最長 600 秒。
  • 如果您經(jīng)常運(yùn)行需要超過 100 秒才能完成的 HTTP 請求(例如大量數(shù)據(jù)導(dǎo)出),請在 Cloudflare DNS 應(yīng)用中將這些進(jìn)程移動到未由 Cloudflare 代理的子域后面。
  • 如果使用 Cloudflare Railgun 的域發(fā)生錯誤 524,請確保 lan.timeout 設(shè)置的值高于默認(rèn)的 30 秒,再重啟 railgun 服務(wù)。

錯誤 525:SSL 握手失敗

525 錯誤表示 Cloudflare 與源站 Web 服務(wù)器之間的 SSL 握手失敗。滿足以下兩個條件時會發(fā)生 525 錯誤:

  1. Cloudflare 與源站 Web 服務(wù)器之間的 SSL 握手失敗,以及
  2. Cloudflare SSL/TLS 應(yīng)用的概述選項(xiàng)卡中設(shè)置了 FullFull (Strict) SSL

解決方案

聯(lián)系您的主機(jī)提供商,從您的源站 Web 服務(wù)器上排查下列常見原因:

  • 未安裝有效的 SSL 證書
  • 未開啟 443 端口(或其他自定義安全端口)
  • 無 SNI 支持
  • Cloudflare 接受的加密套件與源站 Web 服務(wù)器支持的加密套件不匹配。

如果間歇性發(fā)生 525 錯誤,請查看源站 Web 服務(wù)器錯誤日志來確定原因。配置 Apache 以記錄 mod_SSL 錯誤。此外,nginx 的標(biāo)準(zhǔn)錯誤日志中包含 SSL 錯誤,但可能需要提高日志級別。

其他檢查

  • 檢查您的源站服務(wù)器上是否安裝了證書。您可以查看這篇文章,詳細(xì)了解如何運(yùn)行一些測試。如果您沒有任何證書,你可以創(chuàng)建并安裝免費(fèi)的 Cloudflare Origin CA 證書。使用 Origin CA 證書,您就加密 Cloudflare 與源站 Web 服務(wù)器之間的流量。
  • 檢查服務(wù)器使用的密碼套件以確保它們與 Cloudflare 支持的密碼套件匹配。
  • 根據(jù)看到的 525 的時間戳檢查服務(wù)器的錯誤日志,以確保有錯誤可能導(dǎo)致在 SSL 握手期間重置連接。

Error 526: invalid SSL certificate

滿足以下兩個條件時會發(fā)生 526 錯誤:

  1. Cloudflare 無法驗(yàn)證您的源站 Web 服務(wù)器上的 SSL 證書;
  2. Cloudflare SSL/TLS 應(yīng)用的概述選項(xiàng)卡中設(shè)置了 Full SSL (Strict) SSL

解決方案

在 Cloudflare SSL/TLS 應(yīng)用的概述選項(xiàng)卡中將域的 SSL 設(shè)為 Full 而非 Full (strict),這可能是一種快速修復(fù)方法。

請您服務(wù)器管理員或主機(jī)提供商核查源站 Web 服務(wù)器的 SSL 證書,并進(jìn)行以下驗(yàn)證:

  • 證書沒有到期
  • 證書沒有撤銷
  • 證書由證書頒發(fā)機(jī)構(gòu)簽名(而非自簽名)
  • 所請求的域名或目標(biāo)域名和主機(jī)名列在證書的 Common NameSubject Alternative Name
  • 您的源站 Web 服務(wù)器接受通過 SSL 端口 443 進(jìn)行連接
  • 暫停 Cloudflare 并訪問 https://www.sslshopper.com/ssl-checker.html#hostname=www.example.com(將 www.example.com 替換為您的主機(jī)名和域名),以驗(yàn)源站 SSL 證書并無問題:
瀏覽器errconnectionrefused紫鳥超級瀏覽器插圖2

如果源站服務(wù)器使用自簽名證書,請將域配置為使用 Full SSL 而非 Full SSL (Strict)。請參考適用于您的源站的 SSL 推薦設(shè)置。


527 錯誤:Railgun Listener 至源站錯誤

527 錯誤表示 Cloudflare 和源站的 Railgun 服務(wù)器(rg-listener)之間發(fā)生連接中斷。常見的原因包括:

  • 防火墻干擾
  • Railgun 服務(wù)器和 Cloudflare 之間網(wǎng)絡(luò)故障或數(shù)據(jù)包丟失

如需其他詳細(xì)信息來協(xié)助故障排除,請?zhí)岣?Railgun 日志級別。

527 錯誤的最常見原因包括:

  • 連接超時
  • 超過 LAN 超時
  • 連接遭拒
  • TLS/SSL 相關(guān)錯誤

如果要聯(lián)系 Cloudflare 支持,請?zhí)峁┮韵聛碜?Railgun Listener 的信息:

  • railgun.conf 文件的完整內(nèi)容
  • railgun-nat.conf 文件的完整內(nèi)容內(nèi)容
  • 詳述觀察到的錯誤的 Railgun 日志文件

連接超時

下列 Railgun 日志錯誤表明 Railgun Listener 和源站 Web 服務(wù)器之間存在連接故障:

connection failed 0.0.0.0:443/example.com:dial tcp 0.0.0.0:443: i/o timeout
no response from origin (timeout) 0.0.0.0:80/example.com

解決方案

聯(lián)系您的主機(jī)提供商,以協(xié)助測試源站 Web 服務(wù)器和 Railgun Listener 之間的連接問題。例如,運(yùn)行 netcat 命令可以測試從 Railgun Listener 到源站 Web 服務(wù)器的 SERVERIPPORT(80 用于 HTTP,或 443 用于 HTTPS)的連接:

nc -vz SERVERIP PORT

超過 LAN 超時

如果源站 Web 服務(wù)器未在 30 秒默認(rèn)超時內(nèi)向 Railgun Listener 發(fā)送 HTTP 響應(yīng),則生成以下 Railgun Listener 日志錯誤:

  connection failed 0.0.0.0:443/example.com: dial tcp 0.0.0.0:443: i/o timeout

可以通過 railgun.conf 文件的 lan.timeout 參數(shù)調(diào)整這一時間。

解決方案

提高 railgun.conf 中的 lan.timeout 限值,或檢查 Web 服務(wù)器配置。聯(lián)系您的主機(jī)提供商,以確認(rèn)源站 Web 服務(wù)器是否過載。

連接遭拒

當(dāng)來自 Railgun Listener 的請求遭到拒絕時,Railgun 日志中會出現(xiàn)以下錯誤:

Error getting page: dial tcp 0.0.0.0:80:connection refused

解決方案

允許 Railgun Listener 的 IP 處于源站 Web 服務(wù)器的防火墻中。

TLS/SSL 相關(guān)錯誤

如果 TLS 連接失敗,Railgun 日志中會出現(xiàn)以下錯誤:

connection failed 0.0.0.0:443/example.com:remote error: handshake failure
connection failed 0.0.0.0:443/example.com:dial tcp 0.0.0.0:443:connection refused
connection failed 127.0.0.1:443/www.example.com:x509: certificate is valid for
example.com,www.example.com

解決方案

如果發(fā)生 TLS/SSL 錯誤,請在源站 Web 服務(wù)器上檢查并確保:

  • 已開啟 443 端口
  • 源站 Web 服務(wù)器出示了 SSL 證書
  • 源站 Web 服務(wù)器的 SSL 證書的 SAN 或 Common Name 中包含請求的主機(jī)名或目標(biāo)主機(jī)名
  • 在 Cloudflare SSL/TLS 應(yīng)用的概述選項(xiàng)卡中將 SSL 設(shè)為 Full 或 Full (Strict)

如果源站 Web 服務(wù)器 SSL 證書采用自簽名,請在 railgun.conf 中設(shè)置 validate.cert=0


Error 530

返回 HTTP 錯誤 530 時會同時顯示 1XXX 錯誤。后續(xù)我會總結(jié),以了解故障排除信息。