このエラーは、オリジンサーバーが Cloudflare へ空、不明、または想定外のレスポンスを返したときに発生します。
次の要因で起きることが多いです。
- オリジンサーバーのクラッシュまたは設定不備。
- オリジンでファイアウォールやセキュリティプラグインが Cloudflare IP ↗ をブロックしている。
- ヘッダーが 128 KB を超えている(Cookie の過多が原因になりやすい)。
- HTTP ステータスコードまたはレスポンス本文がない、空または不正なレスポンス。
- レスポンスヘッダーの欠落、またはオリジン Web サーバーが 適切な HTTP エラーレスポンス ↗ を返していない。
- オリジンサーバーの HTTP/2 設定が正しくない。
- Cloudflare で Authentication Origin Pull を有効にしているのに、オリジンが 想定どおりに設定されていない。
-
ホスティングプロバイダーまたはサイト管理者に連絡し、切り分けに必要な エラーの詳細 を共有します。オリジン Web サーバーのエラーログでクラッシュを確認し、前のセクションの よくある原因 も確認するよう依頼します。
-
オリジンサーバーで HTTP/2 が有効な場合は、正しく設定されていることを確認します。Cloudflare は ALPN ↗ で HTTP/2 対応を告知したサーバーへ接続します。オリジン Web サーバーが HTTP/2 接続を受け入れたあと、プロトコルを尊重またはサポートしないと、HTTP
520が返ります。Cloudflare ダッシュボードの Speed > Settings > Protocol Optimization で HTTP/2 to Origin を無効にできます。 -
ホスティングプロバイダーまたはサイト管理者へ連絡したあとも
520が続く場合は、次の情報を Cloudflare サポート へ提供します。- エラー発生時にリクエストしたリソースの完全な URL
520エラーメッセージの Cloudflare cf-rayhttp://<YOUR_DOMAIN>/cdn-cgi/traceの出力- HAR ファイル を 2 つ:
- ウェブサイトで Cloudflare を有効にした状態のもの
- Cloudflare を一時的に無効にした 状態のもの
Cloudflare Logs(Logpush の http_requests データセット)を確認するとき、OriginResponseStatus フィールドはオリジンが返した HTTP ステータスコードを示します。
OriginResponseStatus の値 0 は、文脈によって意味が異なります。
- オリジンへ未接続(キャッシュヒットまたは再検証レスポンス): リクエストはキャッシュから返され、Cloudflare はオリジンに接続していません。オリジンのエラー率を計算するときは、これらを除外します。オリジンの問題ではありません。
- オリジン接続の失敗: Cloudflare はオリジンへ接続を試みましたが、HTTP レスポンスを受け取れませんでした。オリジンがレスポンスヘッダー送信前に TCP 接続を切った、ヘッダー送信前にタイムアウトした、または Cloudflare が解析できない不正なレスポンスを送った、のいずれかです。Cloudflare はエラーページを自ら生成します(通常は 520 または 500)。
両者を区別するには、同じログレコードの CacheStatus フィールドを確認します。
CacheStatusがhitまたはrevalidated→ オリジンへ未接続。OriginResponseStatus = 0は想定どおりですCacheStatusがmissまたはexpired→ Cloudflare はオリジンに接続しています。OriginResponseStatus = 0は接続失敗を示します
Origin Analytics で、オリジンが返した内容(originResponseStatus)と、Cloudflare がエンドユーザーへ返した内容(edgeResponseStatus)を比較します。オリジンが 200 を返したのに Cloudflare が 520 を返した場合、レスポンスが不正だった可能性が高いです。ヘッダー過大や、接続の早期切断などです。Top endpoints テーブルで、520 が発生しているパスを特定できます。