CloudflareからCloudRunにカスタムドメインでアクセスするときにERR_TOO_MANY_REDIRECTSとなる件
2024-11-05
#はじめに
今回は、CloudflareからCloudRunにカスタムドメインでアクセスするときにERR_TOO_MANY_REDIRECTSとなる件について説明します。
#目次
#なにが起きたのか
CloudRunでアプリをデプロイし、カスタムドメインを設定しました。
DNSはCloudflareで管理しているため、CloudflareのDNS設定を行いました。
カスタムドメインを設定するとGoogle-Certificates-Bridge
というボットが/.well-known/acme-challenge/xxx
というようなURLにアクセスしてきます。
おそらく、設定したカスタムドメインのSSL証明書を取得するための処理だと思われます。LetsEncryptでも同じだと思われます。
ところが、アクセスログをみるとHTTP STATSU: 302
となっており、リダイレクトが発生していることがわかりました。
schemaがhttpとなっているため、リダイレクトが発生しているのだと思われます。
直接カスタムドメインに設定したURLにブラウザでアクセスすると、ERR_TOO_MANY_REDIRECTS
が発生するがわかりました。
すぐに原因がわからなかったのですが、Cloudflareの暗号化モードがフレキシブルで、CloudRunにプロキシする際に、httpでアクセスしており、CloudRun側でhttpsにリダイレクトしていたということでした。
- CloudRun
Cloud Run はすべての HTTP リクエストを HTTPS にリダイレクトしますが、TLS はウェブサービスに到達する前に終了します。
- Cloudflareの暗号化モード:フレキシブル
Cloudflare訪問者と Cloudflare 間の暗号化のみを有効にします。これにより、ブラウザのセキュリティ警告は回避されますが、Cloudflare とオリジン間のすべての接続は HTTP 経由で行われます。
つまり下記のような経路で、リダイレクトが発生しているということでした。
エンドユーザ
↓ https
Cloudflare(暗号化モード:フレキシブル)
↓ httpなのでhttpsにリダイレクトされて、ループしてしまう。
CloudRun
#解決策
Cloudflareのドキュメントによると、フレキシブル
モードの場合、Cloudflareとオリジン間のすべての接続はHTTP経由で行われるため、リダイレクトが発生する可能性があるとのことです。
Cloudflareの暗号化設定をフレキシブル
からフル(厳密)
に変更したら、正常にアクセスできるようになりました。
#参考リンク
#まとめ
今回は、CloudflareからCloudRunにカスタムドメインでアクセスするときにERR_TOO_MANY_REDIRECTSとなる件について説明しました。
Cloudflareの暗号化モードというのが、あまり馴染みがなかったので勉強になりました。