kogad's blog
ドメインを Cloudflare に移管したら ERR_TOO_MANY_REDIRECTS が出るようになった場合の解決方法

このブログにも使っているドメイン kogad.net を Google Domains から Cloudflare に移管したところ、ブラウザからのアクセス時に ERR_TOO_MANY_REDIRECTS が発生するようになった。 DNS 周りの設定をいろいろ確認してみたが特に問題はなさそうだった。

Cloudflare の設定の問題かなあと思っていろいろググっていたら、GitHub Pages の DNS を Cloudflare に移行時に ERR_TOO_MANY_REDIRECTS が出た際の対処方法 という記事で下記情報を見つけた。

Cloudflare の SSL/TLS セクションでお客様の SSL/TLS 暗号化モードを Full に変更する1。初期設定は Flexible でそれが原因でリダイレクトループが発生する模様

この通りに設定変更したら問題なく動作するようになった。

--

とりあえず上記方法で解決したが、もうちょっと調べてみると Cloudflare の公式ドキュメント に下記の記述を見つけた。

If your domain's encryption mode is set to Flexible, Cloudflare sends unencrypted requests to your origin server over HTTP.

Redirect loops will occur if your origin server automatically redirects all HTTP requests to HTTPS.

自分の場合、nginx で HTTP から HTTPS へのリダイレクトを設定していたので、リダイレクトループが発生してしまったいたらしい。

ドメイン移管して DNS の設定しただけなのになんで HTTPS の話になるんだ?と思ったが、実は Cloudflare の場合、名前解決の際に A レコードに設定した IP アドレスではなく Cloudflare Anycast IPs を返して、Cloudflare のネットワークを介してオリジンサーバーに接続されるらしい。 これもまた公式ドキュメント に下記の記載があった。

With Cloudflare — meaning your domain or subdomain is using proxied DNS records — DNS lookups for your application’s URL will resolve to Cloudflare Anycast IPsOpen external link instead of their original DNS target.