Cloudflare 出現 522 Connection timed out?從來源伺服器連線逐層排查
網站偶爾出現 Cloudflare 522,重新整理後又正常,容易被誤認為外掛故障。522 表示 Cloudflare 連線原站逾時:可能在 TCP 連線建立前,也可能在連線建立後等待回應時發生。這指出故障位置,不能單憑錯誤碼判定是防火牆或主機負載。
先記錄故障範圍與原站資訊
記下完整網址、發生時間與時區、錯誤頁 Ray ID、出錯比例,以及首頁和特定功能是否同時受影響。不要公開原站 IP、登入資料或含個資的日誌。確認 Dashboard 選到正確網域,記錄出問題主機名稱的 A、AAAA、CNAME 與代理狀態,再與主機商提供的目前原站位址比對。IPv4 正確不代表 IPv6 也正確;不要只因紀錄陌生就刪除。
依序比對主機、網路與防火牆
請主機商在錯誤發生時間核對網站服務是否監聽預期的 80/443 埠、主機資源與連線數是否耗盡,並查看 Web 伺服器與系統日誌。間歇性故障要比對相同時間,不要只看目前 CPU。最近搬家、換 IP 或新增 IPv6 時,請管理者檢查各筆 DNS 記錄與原站路由。
接著請網路管理者檢查主機防火牆、雲端安全群組、連線速率限制及封鎖紀錄。Cloudflare 官方說明列出 Cloudflare IP 遭封鎖或限速、原站離線等可能原因;核對官方 IP 範圍時涵蓋 IPv4 與 IPv6,並規劃更新機制。不要為了測試關閉整台防火牆。
若要直接測試原站,應由授權管理者在受控環境執行,保留正確主機名稱、TLS SNI 與憑證驗證;直接開啟 IP 可能落到預設虛擬主機,不能證明網站正常。來源防火牆可能只接受 Cloudflare,因此測試端遭拒也不等於 Cloudflare 遭拒。
使用 curl 在受控環境測試原站
如果你有原站位址及管理權限,可在獲准的測試機執行以下命令,把範例網域和 IP 換成實際值。使用 curl.exe 可避免 Windows PowerShell 中 curl 的別名造成混淆;Linux 或 macOS 可使用 curl。 –resolve 只影響這次命令,網址仍是原本主機名稱,因此保留 HTTP Host、TLS SNI 與一般憑證驗證。
curl.exe --verbose --connect-timeout 10 --max-time 30 --resolve www.example.com:443:192.0.2.10 https://www.example.com/
192.0.2.10 是文件示範位址,不能直接用於你的站。觀察是否完成 TCP 與 TLS 連線、憑證驗證,以及回應狀態;200 只表示這次測試取得成功回應,仍須檢查內容是否為正確站台。連線逾時、憑證不符或 HTTP 500 各代表不同線索,記錄完整錯誤與時間交由管理者比對日誌。不要加 -k 跳過憑證驗證。若原站使用 Cloudflare Origin CA,該憑證可能不受一般 curl 信任,應使用正確的信任鏈或在授權環境由管理者判讀,不能據此認定 Cloudflare 到原站的 TLS 一定失敗。
此測試走的是測試機到原站,而 522 發生於 Cloudflare 到原站;兩條路徑的路由、來源 IP 和防火牆可能不同。因此成功不能排除 Cloudflare 路徑被封鎖,失敗也不能證明 Cloudflare 會失敗。輸出可能包含原站位址及標頭,分享前遮蔽敏感資料。
驗證與復原
修改前記錄原規則、適用範圍與復原方式;一次只調整有證據的項目。變更後從不同網路測試首頁及原本失敗的功能,持續觀察錯誤率和原站日誌,確認不是偶然恢復。若錯誤增加,還原該次設定,將時間、Ray ID 與日誌交給主機商和 Cloudflare 支援。若問題是重新導向迴圈,另參考HTTPS 重新導向排查。









臉書留言
一般留言