平成最後の仕事ではBCryptのコードを読んでいました。(ここに来て初めて「平成最後」を使いました)
URL正規化の1対策として、http->httpsへのリダイレクトによく対応したりしますが、nginxで処理させるとき、ALB通すとプロトコル考慮しないといけないので、若干面倒なんですよね。
wwwの統一もしようとすると、あのフラグ立てて…このフラグ立てて…になったり。
すでにリリースから1年経とうとしていますが、ようやくまともにALBのリダイレクト機能を使ったので、ちょっとしたメモを置きます。
http -> httpsのリダイレクト
まずはサクッとできるところとして、全てのhttpアクセスをhttpsにリダイレクトさせます。
最初はデフォルトのルールが表示されているだけすが、「+」を選択するとキャプチャのような「ルールの挿入」リンクが表示されるので、「ルールの挿入」からルールを追加 http->httpsぐらいであれば、デフォルトのルールを触っても問題ないと思いますが…。まあ、まあ…。
リダイレクト条件とリダイレクト先を設定
今回は単純なhttp->httpsなので、全てのパス(パスが*)をhttpsの同じホスト、パス、クエリにリダイレクトするよう設定します。 考え方的にはIFTTTっぽい。
IFの条件ではパスの他に送信元IPやクエリ、ホスト等を設定できるので、結構いろんなパターンに対応できそうなイメージがあります。すてき。保存してアクセス確認し、ちゃんとリダイレクトされていればOKとなります。簡単。
別ドメインからのリダイレクト
やっぱりもうちょっと対応したいリダイレクトとかあると思うんです。
リニューアルでドメイン変わってしまった時とか。
「このドメインのアクセスはすべてここに!」ぐらいに単純な場合は、Route53で向き先を同じALBにしてしまって、ALBでリダイレクトするのもありかなーと思います。
(細かいリダイレクトに対応しようとすると面倒なので裏でごにょった方が楽そうな気がしますが…)
- http->httpsの時と同じく、リスナーのルール編集からルール編集へ遷移
- ルールを設定
別ドメインなので、リダイレクト条件をホストで指定します。
リダイレクト先も、元のままではなくカスタムでホストを指定します。 - HTTPの別ドメインリダイレクト対応はできたので、HTTPSの方も同じように設定
- Route53で、リダイレクト元で指定したホストと、リダイレクト先で指定したホストを、同じALBに向かせる
これだけで別ドメインからのリダイレクトも対応できます。すてき。
リダイレクトだけでなく、転送先ターゲットの指定もできるので、ホストでターゲットを振り分けることも可能です。
\\便利//
※ ホストに指定できる文字に制限あります。
参照:Application Load Balancer のリスナー - Elastic Load Balancing
ぼやき
AWS、どんどんできることが多くなりますね。
追いかけるのも大変ですが、なんでしょうね、この、発表がある度に「おおおおおーー!!!!!!」ってテンション爆上がりしてしまう感じ。
ドメインのリダイレクトに関しては、少し前までは「このためにインスタンス立てておくのもな〜S3のホスティングしかないのかな〜😩」なんて思っていましたが、ALBで完結するようになるとは。
設定も簡単な上、コストも抑えられて嬉しいですね。
S3使った方法はAWSのナレッジセンターにあります。
Route 53 を使用してドメインを別のドメインにリダイレクトする