AWS ALB + nginx 構成でhttpをhttpsにリダイレクトする

More than 1 year has passed since last update.

ELB+nginx構成でhttpをhttpsにリダイレクトする という記事のALB版です。
nginx じゃなくて apache でもいけます。

ALB とは

2016年8月に発表された、AWSの新しいロードバランサです。
HTTP/2、コンテナ、パスベースルーティングやWebSocketなどに対応可能とのこと。
参考: http://dev.classmethod.jp/cloud/aws/alb-application-load-balancer/

作業の流れ

  1. ALBに割り当てたいインスタンス または Auto Scaling Group を作る
  2. ターゲットグループを作る
  3. ターゲットグループにインスタンスを割り当てる
  4. ALBを作りターゲットグループを割り当てる
  5. ALBのリスナー設定を変更する

ここでは仮に、 greatapp-web-alb という名前のALBを作成すること目的として話を進めます。

最終的にはこんな感じになる

from internet
[internet] http  ->  80 [ALB] http -> 81 [nginx] (https redirect)
[internet] https -> 433 [ALB] http -> 80 [nginx] http -> any [webapp]

from health-checker
[health-checker] http -> 80 [nginx] http -> any [webapp]

ターゲットグループを作る

ターゲットグループは http / https の2種類を作成する必要があります。
ここでは、 greatapp-web-tgt-httpgreatapp-web-tgt-https を作成します。

項目名 greatapp-web-tgt-http greatapp-web-tgt-https
ターゲットグループ名 greatapp-web-tgt-http greatapp-web-tgt-https
ポート 80 443
VPC 任意 任意
ヘルスチェックの設定
プロトコル HTTP HTTP
パス 任意 任意
ヘルスチェックの詳細設定
ポート 上書き(80) 上書き(80)
その他 任意 任意

ターゲットグループにインスタンスを割り当てる

[ターゲットタブ] -> [編集] から各ターゲットグループにインスタンスを登録することができます。
ひとつのインスタンスは複数のターゲットグループに割り当てることができます。

ALBに登録したい任意のインスタンスを選択し、
greatapp-web-tgt-http では ポート 81
greatapp-web-tgt-https では ポート 80
を指定の上、インスタンスを登録してください。

ALBを作りターゲットグループを割り当てる

アプリケーションロードバランサーを作成します。

名前は greatapp-web-alb 、リスナー(ロードバランサーのポート)は http(80) / https(443) の2種類、他は任意に設定してください。

image

ルーティングの設定画面で、先程作成したターゲットグループのうち、 greatapp-web-tgt-http を割り当て、ALBの作成を完了します。

ALBのリスナー設定を変更する

作成したALBをロードバランサー一覧から選択し、リスナータブを開き、HTTP / HTTPS 別に詳細メニューがあるので、HTTPS側を開きます。

HTTPS側のデフォルトルールとして greatapp-web-tgt-http が割り当てられているため、これを greatapp-web-tgt-https に変更します。

あとがき

nginx / apache のコンフィグは元記事 の内容をそのまま利用可能ですので、元記事をご参考ください。 @hotakasaito さんに感謝 :pray: