ポンコツ.log

ひよっこエンジニアのちょっとしたメモ。主に備忘録。たまに雑記。

【AWS】ALBのリスナールールでリダイレクトを設定する

平成最後の仕事ではBCryptのコードを読んでいました。(ここに来て初めて「平成最後」を使いました)


URL正規化の1対策として、http->httpsへのリダイレクトによく対応したりしますが、nginxで処理させるとき、ALB通すとプロトコル考慮しないといけないので、若干面倒なんですよね。
wwwの統一もしようとすると、あのフラグ立てて…このフラグ立てて…になったり。
すでにリリースから1年経とうとしていますが、ようやくまともにALBのリダイレクト機能を使ったので、ちょっとしたメモを置きます。

http -> httpsのリダイレクト

まずはサクッとできるところとして、全てのhttpアクセスをhttpsにリダイレクトさせます。

  1. ロードバランサーの「リスナー」タブから、HTTPプロトコルの「ルールの表示/編集」を選択

    f:id:mr_96:20190427003321p:plain
    ALB

  2. 最初はデフォルトのルールが表示されているだけすが、「+」を選択するとキャプチャのような「ルールの挿入」リンクが表示されるので、「ルールの挿入」からルールを追加

    f:id:mr_96:20190427005438p:plain
    ルール編集画面
    http->httpsぐらいであれば、デフォルトのルールを触っても問題ないと思いますが…。まあ、まあ…。

  3. リダイレクト条件とリダイレクト先を設定
    今回は単純なhttp->httpsなので、全てのパス(パスが*)をhttpsの同じホスト、パス、クエリにリダイレクトするよう設定します。

    f:id:mr_96:20190427004923p:plain
    リダイレクトルール
    考え方的にはIFTTTっぽい。
    IFの条件ではパスの他に送信元IPやクエリ、ホスト等を設定できるので、結構いろんなパターンに対応できそうなイメージがあります。すてき。

  4. 保存してアクセス確認し、ちゃんとリダイレクトされていればOKとなります。簡単。

ドメインからのリダイレクト

やっぱりもうちょっと対応したいリダイレクトとかあると思うんです。
リニューアルでドメイン変わってしまった時とか。

「このドメインのアクセスはすべてここに!」ぐらいに単純な場合は、Route53で向き先を同じALBにしてしまって、ALBでリダイレクトするのもありかなーと思います。
(細かいリダイレクトに対応しようとすると面倒なので裏でごにょった方が楽そうな気がしますが…)

  1. http->httpsの時と同じく、リスナーのルール編集からルール編集へ遷移
  2. ルールを設定
    ドメインなので、リダイレクト条件をホストで指定します。
    リダイレクト先も、元のままではなくカスタムでホストを指定します。
    f:id:mr_96:20190427010436p:plain
    ドメインリダイレクト
  3. HTTPの別ドメインリダイレクト対応はできたので、HTTPSの方も同じように設定
  4. Route53で、リダイレクト元で指定したホストと、リダイレクト先で指定したホストを、同じALBに向かせる

これだけで別ドメインからのリダイレクトも対応できます。すてき。
リダイレクトだけでなく、転送先ターゲットの指定もできるので、ホストでターゲットを振り分けることも可能です。
\\便利//

※ ホストに指定できる文字に制限あります。
参照:Application Load Balancer のリスナー - Elastic Load Balancing

ぼやき

AWS、どんどんできることが多くなりますね。
追いかけるのも大変ですが、なんでしょうね、この、発表がある度に「おおおおおーー!!!!!!」ってテンション爆上がりしてしまう感じ。
ドメインのリダイレクトに関しては、少し前までは「このためにインスタンス立てておくのもな〜S3のホスティングしかないのかな〜😩」なんて思っていましたが、ALBで完結するようになるとは。
設定も簡単な上、コストも抑えられて嬉しいですね。

S3使った方法はAWSのナレッジセンターにあります。
Route 53 を使用してドメインを別のドメインにリダイレクトする

参考