ひろこま Hack Log

プログラミングや機械学習などの知識を記録・共有します

AWS Application Load BalancerでHTTPをHTTPSにリダイレクトする方法

f:id:twx:20200202163810p:plain
AWS Application Load BalancerでHTTPをHTTPSにリダイレクトする方法

この記事ではAWS Application Load BalancerでHTTPをHTTPSにリダイレクトする方法を解説します。

AWSで使えるロードバランサーの種類

AWSで使えるロードバランサは3種類あります。

  • Application Load Balancer
  • Network Load Balancer
  • Classic Load Balancer

の3つです。

Application Load Balancerは、HTTP / HTTPSのトラフィックのルーティングに使用されます。つまり、一般的なWebサービスのサーバ負荷分散をしたいときはApplication Load Balancerを使えば良さそうです。

HTTPSへのリダイレクト

Classic Load BalancerではHTTPをHTTPSにリダイレクトすることはできません。Application Load Balancerでは可能です。

Classic Load Balancerをどうしても使いたい場合は、Amazon EC2にインストールされているウェブサーバ(ApacheやNginx)の .htaccess を書き換えることでリダイレクトできるようになります。

以下では、Application Load Balancerを前提に話を進めます。

Application Load BalancerでHTTPをHTTPSにリダイレクトさせるにはリダイレクトアクションルールを使用します。

このルールを使うとクライアントからのリクエストを別のURLにリダイレクトできます。 その際、一時的(HTTP 302)にするかまたは永続的(HTTP 301)を選択できます。

さらに、リダイレクト前のhostnameを引き継ぐか、portを引き継ぐか、クエリを引き継ぐかなど、いろいろなカスタマイズが可能です。 ここでは、リダイレクト前のHTTPをHTTPSにリダイレクトするだけなので、その他の項目は全てリダイレクト前のものを受け継ぐようにします。

まず、AWSコンソールからロードバランサのページを開き、対象となるロードバランサを選択してください。次に、HTTP: 80 のリスナーの「ルールの表示/編集」をクリックしてください。

f:id:twx:20200202170720p:plain
Load Balancer コンソール画面

リダイレクトアクションを設定する画面が表示されます。ここで、上部のタブの編集ボタン(ペンのアイコン)をクリックし、ルールを編集します。

f:id:twx:20200202170725p:plain
リダイレクトアクション設定画面

IF(すべてに一致)の欄はとくに何も設定しなくて大丈夫です。右側の「THEN」には、

  • リダイレクト
  • HTTPS 443 (※ポートは各自、適宜設定してください。)
  • デフォルトホスト、パス、クエリを使用
  • 301完全に移動されました

と設定し、チェックマークをクリック → 画面右上の更新ボタンをクリック。

以上で、HTTPがHTTPSにリダイレクトされます。


以上、AWS Application Load BalancerでHTTPをHTTPSにリダイレクトする方法でした!

良い記事だと思っていただいた方は、以下の「★+」ボタンのクリック、SNSでのシェア、「読者になる」ボタンのクリック、Twitterのフォローをお願いします!

Koma Hirokazu 's Hacklog ―― Copyright © 2018 Koma Hirokazu