↩️
ALBへのHTTP通信をHTTPSへリダイレクトする
今回はALBへのHTTP通信をHTTPS通信にリダイレクトしてみます。
概念図
リダイレクトのメリット
調査する中で、
古いURLにアクセスすることを防ぎ、新しいURLに誘導するため
という表現がしっくりきました。
古いURLでサイトにアクセス出来ないと、そのサイトへの不満につながってしまうかもしれません。
設定までの流れ
- HTTPリスナーを作成する
- 80番ポートが開放されていることを確認する
HTTPリスナーを作成する
HTTPリスナーの役割はHTTPSリスナーへのリダイレクトです。
Terraformの場合以下のコードで実現することが出来ます。
resource "aws_lb_listener" "test_listener" {
load_balancer_arn = aws_lb.test_lb.arn
port = 80
protocol = "HTTP"
default_action {
type = "redirect"
redirect {
port = "443"
protocol = "HTTPS"
status_code = "HTTP_301"
}
}
}
- HTTPSへのリダイレクト
- ステータスコード301でリダイレクト
のように設定しています。
リダイレクトルールの作成はこちらを参照のこと
80番ポートが開放されていることを確認する
80→443へのリダイレクトを行う場合、80番ポートを開ける必要があります。
こちらは元々開いている可能性が高いですが、開いていない場合は開けましょう。
alb用セキュリティグループ
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
動作確認
curlで確認します。
httpsでは普通にアクセス出来て
$ curl -I https://example.com
HTTP/2 200
// 略
httpではリダイレクト込でアクセス出来ることを確認します
$ curl -I -L http://example.com
HTTP/1.1 301 Moved Permanently
// 略
Location: https://example.com:443/
HTTP/2 200
//略
Location
でリダイレクト先が表示されることで、問題なくリダイレクトしていることがわかります。
ステータスコードも301ですね。
参考
Discussion