2026年11月8日

2026年11月8日

WordPressのHTTP 522(Cloudflare)を解決する方法

はじめに

WordPressサイトでCloudflareを使用していると、まれにHTTP 522エラーが発生することがあります。この記事ではその原因と対策について詳しく解説します。

HTTP 522エラーは「ゲートウェイタイムアウト」を意味し、これはCloudflareのサーバーとWordPressサイトの間で通信ができていないことを示しています。この問題を解決するためには、DNS設定やCloudflareのキャッシュ設定を見直す必要があります。

症状・背景

  • HTTP 522エラーが表示される
  • ブラウザでは「サーバーに接続できません」というメッセージが表示される
  • サイトは完全に応答しない(白い画面)

手順・設定方法

ステップ1: DNS設定を確認する

# CloudflareのDNSレコードを確認します
cloudflare_dns_records=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/dns_records" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json")

# レコードが正しく設定されていることを確認します
for record in $(echo "$cloudflare_dns_records" | jq -r '.result[] | @base64'); do
  _jq() {
    echo ${record} | base64 --decode | jq -r ${1}
  }
  RECORD_NAME=$(_jq '.name')
  RECORD_TYPE=$(_jq '.type')
  RECORD_CONTENT=$(_jq '.content')

  # レコード名、タイプ、コンテンツを表示します
  echo "レコード名: $RECORD_NAME, タイプ: $RECORD_TYPE, コンテンツ: $RECORD_CONTENT"
done

ステップ2: Cloudflareのキャッシュ設定を見直す

# ページルールを確認します
cloudflare_page_rules=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/page_rules" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json")

# ページルールが正しく設定されていることを確認します
for rule in $(echo "$cloudflare_page_rules" | jq -r '.result[] | @base64'); do
  _jq() {
    echo ${rule} | base64 --decode | jq -r ${1}
  }
  RULE_URL=$(_jq '.url')
  CACHE_LEVEL=$(_jq '.cache_level')

  # ルール名、URL、キャッシュレベルを表示します
  echo "ルール名: $RULE_URL, キャッシュレベル: $CACHE_LEVEL"
done

# クラスフルのキャッシュ設定を無効化または変更します
curl -sX PATCH "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/settings/bypass_cache_on_cookie" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"value":"on"}'

ステップ3: A/AAAAレコードを確認する

# CloudflareのA/AAAAレコードを確認します
cloudflare_a_records=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/dns_records?type=A" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json")

# Aレコードが正しく設定されていることを確認します
for record in $(echo "$cloudflare_a_records" | jq -r '.result[] | @base64'); do
  _jq() {
    echo ${record} | base64 --decode | jq -r ${1}
  }
  RECORD_NAME=$(_jq '.name')
  RECORD_IP=$(_jq '.content')

  # レコード名とIPアドレスを表示します
  echo "レコード名: $RECORD_NAME, IPアドレス: $RECORD_IP"
done

# AAAAレコードも同様に確認します
cloudflare_aaaa_records=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/dns_records?type=AAAA" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json")

for record in $(echo "$cloudflare_aaaa_records" | jq -r '.result[] | @base64'); do
  _jq() {
    echo ${record} | base64 --decode | jq -r ${1}
  }
  RECORD_NAME=$(_jq '.name')
  RECORD_IP=$(_jq '.content')

  # レコード名とIPv6アドレスを表示します
  echo "レコード名: $RECORD_NAME, IPv6アドレス: $RECORD_IP"
done

ステップ4: サーバーへのアクセスを確認する

# SSHでサーバーにログインします
ssh -i /path/to/private/key.pem root@$SERVER_IP 'echo "サーバー接続正常"'

# HTTP/HTTPSのアクセスを確認します
curl -I http://$YOUR_DOMAIN
curl -I https://$YOUR_DOMAIN

# サーバー上のWordPressファイルが正しくインストールされていることを確認します
ssh -i /path/to/private/key.pem root@$SERVER_IP 'wp core check-update'

注意事項

  • DNS設定を変更した場合は、完全に反映されるまで24時間程度かかることがあります。
  • Cloudflareのページルールは特定のURLに対するキャッシュやセキュリティ設定を管理します。適切なルールが設定されていることを確認してください。
  • サーバーへのアクセスができなければ、サーバー側のファイアウォール設定やサービス状態もチェックしてください。

まとめ

1. DNSレコードの確認: ドメイン名とIPアドレスを正しくマッピングしているか確認します。

2. Cloudflare APIの利用: CloudflareのAPIを使用して、DNSレコードやページルールの設定を見直します。

3. キャッシュ設定の調整: 必要に応じてクラウドフレアのキャッシュ設定を無効化または変更します。

4. サーバーへのアクセス確認: SSHやHTTP/HTTPSでの接続が正常であることを確認します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲