概要
AWSでSSL化したWEBサーバーを立てたかったので作成したところ、『502 Bad Gateway』が表示されてハマったのでその記録。
結論から言うと、Apacheの再起動でOKでした。
(ただし、これが正解かどうかは不明)
環境
AWSにてWEBサーバーの構築。
ドメインをSSL化したかったのでALB-EC2単体の構成にしてます。
- EC2
- ALB
- Route53
- ACM(AWS Certificate Manage)
EC2上ではApacheを動かしてます。
環境の作成は下記サイトを参照して行いました。
EC2+ACM+ALB+お名前.comで設定をしてサブドメインでhttps接続できるようになるまでひととおり
エラー現象
AWS側の設定も完了して、ブラウザでアクセスするとApacheの画面になった。
よっしゃ!ということで、PHPのソースをアップロードして接続確認してみたところ…
「502 Bad Gateway」
なんでやねん。
確かにALBのログを見ると、ある時点からエラーが上がっている。
ターゲットグループを確認しても確かにunhealthyになっている。
Health checks failed with these codes: [502]
下記画像は別のものですが、unhealthyが表示されていて、「説明」の項目に上記のエラーが表示されていたはずです。
(スクショ忘れたので参考として…)
ALB側の問題か、WEBサーバ上の問題か、わからずにハマってました。。。
Apacheのエラーログに出力があった
サーバー上でApacheを動かしてるわけですが、そもそもここまでアクセスがきていないとダメなわけで。
ログ(/etc/httpd/logs/error_log
)を確認したところ、変なエラーが出てるんです。
[core:notice] [pid 3628] AH00052: child pid 3643 exit signal Segmentation fault (11)
もちろん、 /etc/httpd/logs/access_log
の方にはなにも出力されていない。
ということは、ALB→WEBサーバーへはアクセスOK。WEBサーバー→ALBへの返却がNGということ。
対応したこと
上記エラーログをググったりしたんですが、有効な解決策は見当たらず。
とりあえずApache再起動するかー
と思ってやってみたところ……アクセスできた!!
Apache再起動コマンド↓↓
service httpd restart
まとめ
ターゲットもhealthyになり、HTTPステータスも200が返答されるようになりました。
WEBサーバにロードバランサー(ALB)をつなぎこむとApacheの再起動が必要なのだろうか?
再起動って大事だね。