nginxでのの方法については、わかったのですが、ELBを挟んだ場合は、どこでどのような設定をする必要があるのか、、頭がごちゃごちゃになりハマったのでここで整理します
やりたいことは、以下の通り
- http://www.test-test-abc/ → https://www.test-test-abc
- http://test-test-abc/ → https://www.test-test-abc
- https://test-test-abc/ → https://www.test-test-abc

ここまでやれば、ドメインを統一することにより、SEO的に良さそうな感じなのですが、これを、ELB内部だけで完結するのが、以前はかなり困難だったのです。。(だったはず。。。) これ、いつの間にか、このようなケースの設定もELBでできるようになっておりました!!!
以前のELBの問題とは?
サーバーのHTTPトラフィックをロードバランサのHTTPSにリダイレクトするにはどうすればよいですか? になんか、難しく書いてありますが、まとめると、httpからhttpsにリダイレクトする場合は、リダイレクトループされる可能性があるよってことを書いているのだと思います。 よって。昔は、WEBサーバ側で、リダイレクトの設定をしていたんですよね。。
でも、これ、もう機能として、ELBでサポートされているかもよ!というのが今回のお話になります
設定手順
作業の要は、route53とELBです。少々遠回りしますが、まずは基本的な設定について説明していきます。
ELBの設定
まず、最初に考えるのは、https://www.test-test-abc のこごだけです! また、今回、転送先のwebサーバのlistenポートは、8080と過程します。ちなみに当方のnginxの設定は以下の通りです。
server {
listen 8080 default_server;
server_name www.test-test-abc;
root /var/www/html;
ec2メニューからロードバランサーを選択

ロードバランサーの作成をクリック

Application Load Balancerを選択

リスナーの設定
名前とhttpsを設定します。インターネット向け・内部に関してはおのおのの環境に合わせてください

当方は、インターネット向けを選択しております

アベイラビリティゾーンは2つ以上選択する必要があります。

インターネットゲートウェイを指定してあるサブネットを選択しております

セキュリティ設定の構成
httpsをlistenしますので、証明書が必要になります。今回は、ACMを利用しました。ACMの説明は今回割愛します

セキュリティグループの設定

ターゲットグループの作成
今回listenしているサーバポートは8080なので、以下のように設定しております

ターゲットの登録
上記にて、「ターゲットの登録」ボタンをクリックしますと、下記画面になります

ターゲットの登録が終わりますと、画面上部にリスト表示されます

基本的なELBの登録は以上になります。
登録結果
再度マネージメントコンソールのロードバランサーを見ると結果が確認できます。この中に含まれるDNS名は、後のroute53で設定するため利用します

リスナータブ

リスナータブの中にある、「ルールの表示/編集」をクリックします

ルールの表示確認
以下のようになっているはずです。簡単に説明すると、httpsリクエストがあった場合、pot:8080のターゲットグループにリクエストを転送するよーっていう意味です

ターゲットグループのリンクをクリックしてみてください

ターゲットグループの確認画面
ターゲットグループは、転送先のインスタンス情報が入っております。もともとロードバランサーなので、このグループ内で、複数のインスタンスを追加することで本来のロードバランシングができるわけですが、今回やりたいのは、負荷分散ではなくドメイン統合なので1台のみにしております


route53の設定
次は、route53の設定です。
www.test-test-abc
CNAMEでELBで設定した DNS名を指定します

これでひとまず、https://www.test-test-abc は、アクセスできるようになりました。
wwwなしのリダイレクト設定
本題のwwwあり、なしでも、https://wwwにアクセスする設定です
おさらいしますと。
実現したいのは、この部分なので

このあたりを順に記載していきます。
http://www.test-test-abc -> https://www.test-test-abc の設定
リスナーの追加
前回作成した、elbの設定画面にて、リスナーの追加をクリック

以下のように設定を追加します。

リスナーにHTTP:80が追加されたと思います

これにより、
http://www.test-test-abc のリクエストは、全て、https://www.test-test-abc に転送されるようになりました
http://test-test-abc -> https://test-test-abc の設定
では、wwwなしのwww付き転送は、どうすればいいか?
- http://test-test-abc/ → https://www.test-test-abc
- https://test-test-abc/ → https://www.test-test-abc
上記の設定の話になります
route53の設定
あ、忘れてました、wwwとwww無しとは別に、dnsレコードの設定をする必要がありますが、CNAMEでの登録することはできません 以下の通り、AレコードでエイリアスでELBのDNSを設定します

再びELBの設定
再び、ELBの設定になります
ルールをさらに1つ追加し、httpsのリダイレクトに設定します

これは、port:443、つまり以下のように
https://test-test-abc のみを想定したルールの設定です。
port : 80のルールはなぜ、追加しないのか?ですが、これは、PORT:80のリクエストは、どんなドメインであろうと、https://test-test-abc に強制的にリダイレクトされるので、あえて設定する必要がないからです

以上です!!
WEBサーバ側で小細工をしなくても、ELBでルーティングの設定がほとんど行えるのはかなり魅力ですよね!!
わたし的には、インスタンスが一台でも、ELBを活用することをお勧めします!
でわでわ!
