ALBの301リダイレクトがChromeにキャッシュされてハマった話

301リダイレクトがChromeにキャッシュされていることを知らずに、 ALBの設定ミスとあいまってハマりました。 その解決方法と備忘録です。
2019.04.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Webサーバーのフロントに、AWSのApplication Load Balancerがとても便利です。

ACMでSSL証明書を作成してSSL終端にすれば、Webサーバー側でSSL化について考える必要がなくなります。

【新機能】新しいロードバランサー Application Load Balancer(ALB)が発表されました

HTTP → HTTPSのリダイレクトもALBがやってくれます。

[新機能]Webサーバでの実装不要!ALBだけでリダイレクト出来るようになりました!

そんな便利なALBですが、設定ミスとChromeブラウザの仕様があいまってハマったので、その備忘録です。

やりたかったこと

HTTP → HTTPSのリダイレクトです。
ALBのHTTP:80リスナーに、HTTPS:443へリダイレクトする設定を入れる。よくある設定です。

間違えたこと

リダイレクトのポートを間違えました。

起こったこと

ChromeブラウザでHTTPアクセスしようとすると、設定どおり間違えたポートにリダイレクトされます。

すぐにおかしいことに気がついてALBのリスナーのポートを443に修正します。

リスナー修正後に反映されていることを確認しようとしますが、なぜか間違えたポートにリダイレクトされます。

試しにブラウザをFirefoxに変えて、HTTPアクセスしてみます。修正した通りにリダイレクトされます。

いったい何が起きているんだ???

Chromeは301リダイレクトをキャッシュする

Chromeブラウザは301リダイレクトをキャッシュするようです。
いろいろググってみると、同じようにハマっている方がいっぱい居ました。みなさま情報ありがとうございます?

Chrome で 301 リダイレクトが解除できないときの対処方法 | gotohayato

Chromeでウェブ開発:301転送キャッシュの対応。 | WWWクリエイターズ

Chromeで意図しないリダイレクトが起きた場合の対処 - Qiita

リダイレクトキャッシュを無視する方法

Chromeブラウザの開発者ツールを使うと301リダイレクトキャッシュを無視できます。

開発者ツールを開いて、ネットワークタブを選択して、 Disable cache にチェックを入れてからリダイレクト元のURLにアクセスすると、キャッシュを無視してALBで設定したとおりにリダイレクトしてくれました。