どうも、僕です。
classmethodさんが書いている記事を参考にEC2のシングル構成のサーバを参考にサーバ構築をして502エラーにハマったのでメモを書いておきます[†1]。
ハマった内容
ブラウザからドメイン経由(Route53)で自作サーバにアクセスしたときに
「502 BAD Gateway」がでる不具合に直面しました。
原因
ALBのヘルスチェックのパスの設定の問題でした[†2]。
ヘルスチェックでエラーにならないページを準備するまたは200番を返却Webアプリケーションを作成することで502エラーを返却しなくなります。
対策
対策を以下に記載しておきます。
- ヘルスチェックのパスに合わせてWebアプリケーションを作成すること
初期値はルートディレクトリを指定されているのでtomcatにルート用のwebアプリケーションがなければROOTフォルダと「index.html」を作成する
- ヘルスチェックのフォルダを変更すること
初期値はルートディレクトを設定しているので作成したそのWebアプリケーションのパスを設定する。
サーバ構成とEC2内の構成(エラーが発生している状況)
AWS シングル構成
ec2内のアプリケーション
「502 bad gateway」エラー
TOMCATの設定
ROOTアプリケーションを作っていない状態です。
・WEBAPPSの中身
- APPLICATION1
- APPLICATION2
ALBのヘルスチェック
初期設定:ROOTに対してヘルスチェックする設定となっています。
設定値:「/」
おわりに
この問題を解決するためにALBのログを確認したりしましたが変な値を返却するといったことはありませんでしたので原因を把握するまでに時間がかかってしまいました。
参考
†1:1台のEC2でもELBを使うメリットについてまとめてみました,豊崎隆
https://dev.classmethod.jp/cloud/aws/benefit_elb_with_one_ec2/
†2:ELBとEC2のホームページ運用で502エラー
https://forums.aws.amazon.com/thread.jspa?threadID=247138