502 Bad Gatewayが出た場合の問題の切り分け方&治し方

2017-10-24 2017-10-25

トラブル対応で結構厄介なのが「502 Bad Gateway」エラーです。

このエラーの意味は「ゲートウェイ、プロキシなどが不正なリクエストを受け取った」というものですが、「受け取った」ということは「送った」やつがいるということです。ということで、その不正なリクエストを送ってしまったサーバを正常に戻してあげることで、502エラーを解決させることが出来ます。

とは言うものの、通信途中のサーバの中から、その不正なリクエストを送ってしまったサーバを特定するのは困難です。

結論から言えば、全ての502エラーを自力で解決するのは不可能なんですが、自分で解決できる問題なのか、自分では解決できない問題なのか、その辺をハッキリさせないと顧客に満足して頂けないがうるさいので、実際に実務でどんな感じにやってるか、共有したいと思います。

どこからアクセスして502 Bad Gatewayが出たのか確認する

502エラーは、「通信途中のサーバ」のどこかで問題が起こっているときに発生します。それは、対象サービス(サイト)のおいてあるサーバかもしれませんし、あなたの契約しているプロバイダかもしれません。要するに、どこが原因かはわからないということです。

しかし、その原因を完璧に追求しなければならないケースはあまり多くはないでしょう。

プロバイダなど通信系であれば、「自社のネットワークに問題が無いことがわかれば良い」のであり、Webサービス管理者であれば「自社のWebサービスに問題が無いことがわかれば良い」はずです。ということで、それを調べましょう。

やることはたった一つで、2種類の経路で対象サービスにアクセスする事だけです。

この結果、両方の経路で502 Bad Gatewayが出たのであれば、対象のサービスが置かれているサーバに問題がある可能性が高いです。「2種類の経路で同様に使われている箇所に問題があった」という可能性もゼロではありませんが、その可能性はそれ程高くありません。

片方の経路でのみ502 Bad Gatewayが出たのであれば、単に経路のどこかに問題があっただけです。Webサービス管理者の方、おめでとうございます。自信を持って「お前のネットワークがおかしいだけだから」と伝えましょう。

502 Bad Gatewayの治し方

前述した調査で前者(Webサービスの置かれているサーバに問題があったケース)の場合は、Webサーバを再起動してあげると、割と治ります。

もちろんこれは、今まで動いていて、とある日突然502 Bad Gatewayが発生した場合の話です。最初から502なら完全に設定間違ってます。

で、このケースで困るのが、レンタルサーバを借りている場合。SSHで入って再起動かけてとか出来ないので、「Webサーバ再起動とか出来ないんだけど!」と途方に暮れている方もいるかもしれません。

安心してください。PHPの設定とか変更して保存すれば、大抵Webサーバも再起動されます。PHPのバージョン変更するとかして、保存して数分置けば割と治ります。治らない場合もあります。

まとめ

502 Bad Gatewayが出ると、「これはサーバ側の問題なのでうちは悪くありません!」と反射的に答えてしまう方もいると思いますが、ある程度の原因の絞り込みは出来ます。

軽く調査した上で

「お客様の環境から閲覧した際には502エラーが発生しているようですが、弊社からアクセスした際にはエラーは発生いたしません(スクショ添付)。このことから、お客様の通信経路に障害が発生している可能性が高く、お客様のWebサイト自体には問題は発生していないと考えられます。私同様、他の閲覧者からも通常通り閲覧出来ていると思われますので、ご安心ください。」

とか送ってやりましょう。