目次
はじめに
今回は、AWS上でALBを利用せず、かつhttps通信を用いて、あるドメインから違うドメインに対してリダイレクトする方法をご紹介します。
★今回の対象となる事例
・ドメインを変更した
・Google Adsenseの申請の際にwwwなしのドメインからサブドメイン(www.)にリダイレクトする必要がある
・ALBを利用すると高価なので、できるだけ安価にリダイレクトしたい
等々
AWSの公式サイトで、「Amazon S3 および Amazon Route 53 を使用してドメインを別のドメインにリダイレクトする方法はありますか?」
という記事が掲載されております。これは、Route53とS3を用いているのですが、
この方法では、httpsでアクセスしてきたものに対して、リダイレクトを行うことができません。
(※S3だけではSSLの設定ができない為)
参考:https://aws.amazon.com/jp/premiumsupport/knowledge-center/redirect-domain-route-53/
色々試行錯誤しまして、下記のようなリダイレクトを行う方法を確立しましたので、共有します。
https://example.com ⇒ https://www.example.com
https://abc.com ⇒ https://www.example.com
全体像
httpsでリダイレクトを行うにあたって、CloudFrontとRoute53、S3(static hosting)を利用します。
この課題にぶつかる方は、運用しているサイトが、LightsailやEC2、S3を使っている方が多いのではないかと思います。
今回は例として、https://example.com ⇒ https://www.example.comのリダイレクトのケースでお話しします。
流れとしては下記のようになります。
S3でリダイレクトの設定を行う
↓
CloudFrontでS3をOriginとするDistributionを作成する
↓
Route53にて、example.comへアクセスしてきた際、作成したCloudFrontへルーティングするように設定する
↓
リダイレクト完了!
S3でリダイレクトの設定を行う
まずS3でリダイレクトを行う設定を行います。
「バケットを作成」をクリックします。
バケット名にリダイレクト元のドメインを入力し、
パブリックアクセスブロックのチェックを外して、「バケットを作成」をクリックします。
作成したバケットを選択し、プロパティを変更します。
プロパティタグをクリックし、一番下にある「静的ウェブサイトホスティング」の「編集する」ボタンをクリックします。
静的ホスティング:有効にする
ホスティングタイプ:オブジェクトのリクエストをリダイレクトする
ホスト名:リダイレクト先のドメイン
プロトコル・オプション:http
に設定する。
これで、S3のバケットウェブサイトエンドポイントに接続してきた際、
www.example.comにリダイレクトされるようになります。
なお、この段階では、
http://example.com.s3-website-ap-northeast-1.amazonaws.com ⇒ http://www.example.com
にリダイレクトされることを設定しただけです。
CloudFrontのDistibutionを作成する
「Create Distribution」をクリックします。
「Get Started」をクリックします。
Origin Domain Name:example.com.s3-website-ap-northeast-1.amazonaws.com(S3のエンドポイント)
Viewer Protocol Policy:Redirect HTTP to HTTPS
と設定します。これで、httpでアクセスしてきても、httpsに変換されます。
Alternate Domain Names:example.com
SSL Certificate:Custom SSL Certificate
取得済のSSL証明書(example.comのもの)を選択します。
ACMで取得済なのに、ここに証明書が出てこない場合は、バージニア北部リージョン以外で取得している可能性があります。
CloudFrontに適用する為には、バージニア北部リージョンで証明書を取得する必要があります。
これでCloudFrontの設定は完了です。
CloudFrontの構築には少し時間がかかります。(10分程度?)
Route53を設定する
最後に、Route53の設定を行います。
「レコードを作成」をクリックします。
先ほど構築したCloudFrontを選択し、「変更を保存」をクリックします。
これで、全ての設定が完了しました。
まとめると、このような流れになります。
http://example.comにアクセス
↓
CloudFrontにアクセス
↓
http://example.com.s3-website-ap-northeast-1.amazonaws.comにアクセス
↓
http://www.example.comにリダイレクト
↓
既に構築していた方のCloudFrontもしくはALBでhttpsにリダイレクト
↓
https://www.example.comにアクセス
最初にhttps://example.comでアクセスしたとしても、CloudFrontはhttpsで受けることができるので、問題ありません。
以上です。
後はブラウザから、アクセスしてみて問題なくリダイレクトされているか等、確認して完了となります。
お疲れさまでした。
お読み頂きありがとうございました。