プロキシの502 Bad Gatewayエラー:送信元を特定する
更新日:
502 Bad Gatewayは、中継するサーバー(ご利用のプロキシ、またはウェブサイト側のフロントエンドサーバー)がリクエストを転送したものの、有効な応答を得られなかったことを示します。同じエラーコードでも原因はまったく異なるため、修正作業を行う前にどちらが502を返しているのかを切り分ける必要があります。
プロキシから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
502がどこに表示されているか確認する
httpsアドレスで502ページが表示される場合はウェブサイト側に原因があります。Chromeでトンネルエラーが表示される場合はプロキシ経路に原因があります。
- 2
プロキシを無効にして再読み込みする
プロキシなしでも502が表示される場合、ウェブサイト自体に問題が発生しています。
- 3
同じプロキシ経由で別のサイトを読み込む
他のサイトが問題なく開くならプロキシは正常であり、元のサイトだけがアクセスを拒否しているかダウンしています。
- 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がブロックされるリスクを防ぐことができます。
料金を見る