プロキシの502 Bad Gatewayエラー:送信元を特定する

更新日:

502 Bad Gatewayは、中継するサーバー(ご利用のプロキシ、またはウェブサイト側のフロントエンドサーバー)がリクエストを転送したものの、有効な応答を得られなかったことを示します。同じエラーコードでも原因はまったく異なるため、修正作業を行う前にどちらが502を返しているのかを切り分ける必要があります。

他者と共有されない専用プライベートIP

プロキシから502が返される場合の挙動

テスト用プロキシで502を返すように設定し、そのレスポンスを記録しました(203.0.113.10:8080 および user123:pass456 に置き換えています):

  • HTTPSサイトの場合:curl -x http://user123:[email protected]:8080 https://example.com を実行すると、curl: (56) CONNECT tunnel failed, response 502 と出力されます。
  • 通常のHTTPサイトの場合:curlはステータス 502 を受信します。
  • Chromeでそのプロキシを経由してHTTPSページを読み込むと、ERR_TUNNEL_CONNECTION_FAILED が表示され、502エラーページ自体は一切表示されません。
  • proxy checker では HTTP 502 と表示されます。その他のコードも同様に HTTP <code> として表示されます。

見分けの決定打:HTTPSサイト上の502エラーページ

HTTPSサイトの場合、プロキシはトンネルを確立するだけであり、暗号化された通信内に独自のページを割り込ませることはできません。プロキシが接続を拒否した場合、Chromeは ERR_TUNNEL_CONNECTION_FAILED を返します。そのため、https:// アドレスで完全な「502 Bad Gateway」ページが表示されている場合、それはほぼ確実にプロキシからではなくウェブサイトのサーバーから返されたものです。

確認するには、プロキシをオフにして同じページを読み込んでみてください。それでも502が表示されるならウェブサイト側に障害が発生しているため、復旧を待つかサイト管理者に連絡するしかありません。

実際にプロキシが502を送信しているケース

  • 接続先がプロキシに応答しない。 サイトがダウンしている、過負荷状態である、またはプロキシのIP帯からの接続を拒否しています。
  • ドメインの入力ミスや名前解決の失敗。 プロキシがサイトのアドレスを見つけられないため、リクエストを転送できません。
  • 接続先ポートが閉じている。 リクエストが、サイト側で開放されていないポートを対象としています。
  • プロキシ側の一時的な障害。 発生頻度は低めですが、1つのプロキシではどのサイトも502になるのに、別のプロキシでは正常に動作する場合に確認できます。

各環境での対処方法

  • Chromeやアンチディテクトブラウザのプロファイル: 同じプロファイルで別の主要サイトを開いてみてください。正常に読み込める場合、プロキシには問題がなく、元のサイト側に原因があります。
  • スマートフォン: Wi-Fiプロキシをオフにし、モバイルデータ通信でページを開いて、誰にとってもアクセスできない状態かどうかを確認します。
  • curl: -v を追加して CONNECT の直後に502が返ってくるか確認し、別のドメインでも試して原因を絞り込みます。
  • Python requests: HTTPページの場合は response.status_code == 502 を確認し、少し間隔を空けてリトライします。HTTPSページの場合はトンネルの失敗が requests.exceptions.ProxyError として発生します。サイトに過剰な負荷をかけないよう、リトライ間隔を適切に空けてください。

手順

  1. 1

    502がどこに表示されているか確認する

    httpsアドレスで502ページが表示される場合はウェブサイト側に原因があります。Chromeでトンネルエラーが表示される場合はプロキシ経路に原因があります。

  2. 2

    プロキシを無効にして再読み込みする

    プロキシなしでも502が表示される場合、ウェブサイト自体に問題が発生しています。

  3. 3

    同じプロキシ経由で別のサイトを読み込む

    他のサイトが問題なく開くならプロキシは正常であり、元のサイトだけがアクセスを拒否しているかダウンしています。

  4. 4

    チェッカーでプロキシを確認する

    proxy checker にプロキシ情報を入力して確認します。すべてのサイトで HTTP 502 となる場合は、その結果を添えてサポートチケットを作成してください。

よくある質問

502エラーはプロキシの有効期限が切れたことを意味しますか?

通常は違います。期限切れや停止したプロキシでは、接続エラーやタイムアウトが発生する傾向があります。proxy timeout をご覧ください。

プロキシ経由で1つのウェブサイトだけが502を返すのはなぜですか?

そのサイトに障害が発生しているか、プロキシのIPからの接続に応答していない可能性があります。時間を置いて再度試すか、別の国のIPをご利用ください。

502と504の違いは何ですか?

502は無効な応答が返されたか応答が得られなかったことを意味し、504は中継サーバーがタイムアウトしたことを意味します。チェッカーではどちらも HTTP <code> として表示されます。

スクレイピング中に時々502が発生します。プロキシを変更すべきですか?

散発的な502は、通常ターゲットサーバーの過負荷が原因です。プロキシを交換する前に、リクエストレートを落とし、間隔を空けたリトライ処理を導入してみてください。proxies for web scraping をご覧ください。

他者と共有されない専用プライベートIP

VinaProxy のプライベートプロキシなら、他の利用者の行動が原因でIPがブロックされるリスクを防ぐことができます。

料金を見る

関連記事

プロキシエラー
プロキシ利用時の ERR_TUNNEL_CONNECTION_FAILED の解決方法
ERR_TUNNEL_CONNECTION_FAILED は、Chrome がプロキシに到達したものの HTTPS トンネルを確立できなかったことを意味します。CONNECT コードを確認し、Chrome、Puppeteer、Android で解決する方法を解説します。
プロキシエラー
プロキシタイムアウトエラー:接続が止まり、最終的に切断される
プロキシのタイムアウトは、制限時間内に応答が届かない状態を指します。curl (28) と ERR_TIMED_OUT の見分け方、Python のタイムアウト調整、トラフィックが遮断されている箇所の特定方法を解説します。
無料ツール
プロキシチェッカー:プロキシをオンラインで確認
無料のプロキシチェッカー。ip:port:user:pass形式で最大100件を貼り付け、接続状態・出口IP・遅延をオンラインで確認。エラーの意味も解説します。
ツール別プロキシ設定
cURL でプロキシを使用する方法(コマンド構文とトラブルシューティング)
Linux、macOS、Windows で curl コマンドを使って認証付き HTTP(S) プロキシ(-x http://user:pass@ip:port および -U)を実行する方法。
プラットフォーム別プロキシ
Webスクレイピング用プロキシ:24時間365日クローラー向け無制限専用IPv4&ISPプール
Python、Playwright、Selenium、Scrapy向け高速HTTP(S)専用IPv4&固定ISPプロキシ。月間帯域幅無制限。
ツール別プロキシ設定
Google Chromeにおけるプロキシ設定ガイド
Chrome拡張機能、--proxy-serverコマンドラインフラグ、個別プロファイルを利用して、OS全体のIPを変えずにGoogle ChromeのみにVinaProxy HTTP(S)プロキシを設定します。
ツール別プロキシ設定
Windows 10 & Windows 11でプロキシを構成する方法
WinINETシステム設定、PowerShell環境変数、またはnetsh winhttpを使用して、Windows 10およびWindows 11でVinaProxy HTTP(S)プロキシを構成します。
ツール別プロキシ設定
GenLoginでのプロキシ設定方法(個別設定・一括インポート)
GenLoginアンチディテクトブラウザでHTTP ip:port:user:passプロキシを設定。タイムゾーン・WebRTC同期や接続トラブル解決法を解説。