最近使用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ī)提供商提供的錯誤詳情
- 具體的 5XX 錯誤代碼和消息
- 發(fā)生 5XX 錯誤的時間和時區(qū)
- 造成 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 支持:
- 您的域名
- 發(fā)生 500 錯誤的時間和時區(qū)
- 觀察到 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 錯誤:
解決方案
聯(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 錯誤如下方所示:
如果錯誤未提及“cloudflare”,請聯(lián)系主機(jī)提供商來尋求與源自源站的 502/504 錯誤相關(guān)的幫助。
解決方案
為避免處理您的查詢時發(fā)生延遲,請向 Cloudflare 支持提供以下必要詳情:
- 發(fā)生問題的時間和時區(qū)
- 造成 HTTP 502 或 504 錯誤的 URL(例如:https://www.example.com/images/icons/image1.png)
- 瀏覽 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 支持提供以下信息:
- 您的域名
- 發(fā)生 503 錯誤的時間和時區(qū)
- 觀察到 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è)置為 Full 或 Full (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ā)生超時的時間:
- 在連接建立之前,源站 Web 服務(wù)器未在 Cloudflare 發(fā)送 SYN 后 15 秒內(nèi)將 SYN + ACK 返回給 Cloudflare。
- 在連接建立之后,源站 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ù)器上排查下列常見原因:
- (最常見).htaccess、iptables 或防火墻中阻止了 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ù)器品牌(如 Apache 或 nginx)的日志文檔。
- 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 錯誤:
- Cloudflare 與源站 Web 服務(wù)器之間的 SSL 握手失敗,以及
- Cloudflare SSL/TLS 應(yīng)用的概述選項(xiàng)卡中設(shè)置了 Full 或 Full (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 錯誤:
- Cloudflare 無法驗(yàn)證您的源站 Web 服務(wù)器上的 SSL 證書;
- 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 Name 或 Subject 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 證書并無問題:
如果源站服務(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ù)器的 SERVERIP 和 PORT(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é),以了解故障排除信息。


