ELB背後のHTTPリダイレクトのループ回避

もう3月も半ば。兄猫みゃおの一周忌も過ぎて、桜もちらほら。早過ぎます〜

さて、ちょっと気になっていたことがあって、検索でヒットしたページにアンカーを打っておきます(リンクを貼る、やね)。

ELB で http から https に 301 リダイレクトするとリダイレクトループになる場合の対処法 | Psychoco Laboratory
https://psychoco.net/misc/redirect-http-https-elb

Elastic Load Balancing を使用して HTTP トラフィックを HTTPS にリダイレクトする | AWS re:Post
https://repost.aws/ja/knowledge-center/redirect-http-https-elb

システム構成としては、ELB (Application Load Balancer) が HTTPS を終端した後、443/https と80/http のどちらも EC2サーバーへ繋いでくれます。ここで HTTP を HTTPS にリダイレクトしたいんですが、それをサーバー側でやる場合(ELB の設定でもできるそうです)。

このときサーバーはどちらも80/http で受けるので、常にリダイレクトすると無限ループになります。そこで「元々 ELB に届いた時に HTTPS だったか」判定する必要があって、そのとき使えるのが HTTP リクエストヘッダーの X-Forwarded-Proto です。

HTTP headers and Application Load Balancers – Elastic Load Balancing
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/x-forwarded-headers.html

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です