CloudflareとRailwayでカスタムドメインを設定した際のリダイレクトループ問題と解決方法

こんにちは!今回は、CloudflareとRailwayを使ってカスタムドメインを設定する際に遭遇した「リダイレクトループ」の問題と、その解決方法について解説します。

問題:リダイレクトループ現象

Railway上でアプリケーションをデプロイし、Cloudflareで管理しているドメインを接続した際、以下のようなエラーメッセージが表示されました:

このページは動作していません
example.com でリダイレクトが繰り返し行われました。
ERR_TOO_MANY_REDIRECTS

この「リダイレクトループ」は、ブラウザがサイトにアクセスしようとすると無限にリダイレクトが続き、ページが表示されなくなる現象です。

原因:CloudflareとRailwayの設定の競合

この問題の主な原因は、CloudflareのSSL/TLS設定Railway側のHTTPSリダイレクトが競合していることでした。

具体的には、以下の設定が問題を引き起こしていました:

  1. CloudflareのSSL/TLS設定が「フレキシブル」になっていた
  2. Railway側では自動的にHTTPSへのリダイレクトが行われていた

なぜリダイレクトループが発生するのか?

  1. ユーザーがドメインにアクセス(HTTPS)
  2. Cloudflareはリクエストを受け取り、「フレキシブル」モードのため、HTTPでRailwayに転送
  3. RailwayはHTTPリクエストを受け取ると、自動的にHTTPSにリダイレクト
  4. ブラウザは再びHTTPSでアクセスを試みる
  5. 上記の2〜4が無限に繰り返される

解決方法:CloudflareのSSL/TLS設定の変更

問題を解決するためには、CloudflareのSSL/TLS設定を「フル(厳密)」に変更する必要がありました。

手順:

  1. Cloudflareダッシュボードにログイン
  2. 該当ドメインを選択
  3. 「SSL/TLS」タブを選択
  4. 「概要」サブタブで「暗号化モード」を確認
  5. 「フレキシブル」から「フル(厳密)」に変更

各SSL/TLS設定の違いと特徴

CloudflareのSSL/TLS設定には以下のオプションがあります。それぞれの項目について詳しく説明します。

1. 厳密(SSLのみのOrigin Pull)- エンタープライズプランのみ

  • Cloudflare⇔ユーザー間:HTTPS
  • Cloudflare⇔オリジンサーバー間:HTTPS(TLS 1.2以上のみ)
  • 特徴
    • 最も高いセキュリティレベル
    • 古いSSLプロトコルをブロック(TLS 1.0, 1.1)
    • Cloudflareの接続認証が必要(相互認証)
    • オリジンサーバーはCloudflareからの接続のみ許可可能
  • 用途:金融機関、医療データ、政府系サイトなど特に高度なセキュリティが必要な場合
  • 注意点:エンタープライズプランでのみ利用可能

2. フル(厳密)

  • Cloudflare⇔ユーザー間:HTTPS
  • Cloudflare⇔オリジンサーバー間:HTTPS
  • 特徴:有効な証明書のみ受け入れる、より安全
  • 用途:一般的な本番環境、多くのケースでこの設定が推奨

3. フル

  • Cloudflare⇔ユーザー間:HTTPS
  • Cloudflare⇔オリジンサーバー間:HTTPS
  • 特徴:自己署名証明書や期限切れ証明書も許容
  • 用途:自己署名証明書を使用している環境

4. フレキシブル

  • Cloudflare⇔ユーザー間:HTTPS
  • Cloudflare⇔オリジンサーバー間:HTTP
  • 特徴:オリジンサーバーにSSL証明書不要
  • 注意点:Railwayのようにリダイレクトを行うサービスでは問題発生
  • 用途:SSL証明書を設定できないレガシーサーバーなど

5. オフ

  • Cloudflare⇔ユーザー間:HTTP
  • Cloudflare⇔オリジンサーバー間:HTTP
  • 特徴:暗号化なし、セキュリティ低
  • 用途:テスト環境や非公開の開発サイトのみ(本番環境では非推奨)

今回の解決策がうまくいった理由

「フル(厳密)」に変更することで、Cloudflareからオリジンサーバー(Railway)への通信もHTTPSになり、Railwayでのリダイレクトが発生しなくなりました。

  1. ユーザーがHTTPSでアクセス
  2. CloudflareはHTTPSでRailwayにリクエストを転送
  3. RailwayはHTTPSリクエストを受け取るため、リダイレクトを行わない
  4. 正常にページが表示される

まとめ

CloudflareとRailwayを組み合わせてカスタムドメインを設定する際は、SSL/TLS設定を「フル(厳密)」に変更することで、リダイレクトループを防ぐことができます。

この問題は、異なるサービス間の連携において、両方のサービスが同じ目的(HTTPSへのリダイレクト)のために競合する典型的な例です。

SSL/TLS設定については以下のポイントを覚えておくと良いでしょう:

  • 自動設定はサーバー状況を検出して設定を適用するため、予期せぬ問題が発生する可能性がある
  • 一般的な用途では「フル(厳密)」設定が最もバランスの良い選択
  • 「厳密(SSLのみのOrigin Pull)」はエンタープライズプラン限定で、特に高いセキュリティが必要な場合に検討

今回の経験が、同様の問題に直面している方々の参考になれば幸いです!

この記事をシェアする