この記事では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 のリスナーの「ルールの表示/編集」をクリックしてください。
リダイレクトアクションを設定する画面が表示されます。ここで、上部のタブの編集ボタン(ペンのアイコン)をクリックし、ルールを編集します。
IF(すべてに一致)の欄はとくに何も設定しなくて大丈夫です。右側の「THEN」には、
- リダイレクト
- HTTPS 443 (※ポートは各自、適宜設定してください。)
- デフォルトホスト、パス、クエリを使用
- 301完全に移動されました
と設定し、チェックマークをクリック → 画面右上の更新ボタンをクリック。
以上で、HTTPがHTTPSにリダイレクトされます。
以上、AWS Application Load BalancerでHTTPをHTTPSにリダイレクトする方法でした!
良い記事だと思っていただいた方は、以下の「★+」ボタンのクリック、SNSでのシェア、「読者になる」ボタンのクリック、Twitterのフォローをお願いします!