Cloudflare Redirect Rulesで爆速簡単リダイレクト
CloudflareのRedirect Rulesで、すぐに、簡単に、リダイレクト設定ができたので紹介します。
はじめに
わたしがプライベートで建てているサービスは以下の構成で動いています。(ドメインは仮のものです)
-
service.example.com
- メインのEC2インスタンスにつながる。基本的にユーザーはこのドメインにアクセスしてサービスを利用している
-
mediaproxy-service.example.com
- プロキシ用のEC2インスタンスにつながる。画像や動画などのプロキシを行っており、画像のURLなどはこのドメインが使われる
ドメイン・DNS管理はCloudflare。
URLへアクセスするとCloudfrontなどいくつかのサービスを介して、それぞれのEC2インスタンスへつながります。
先日、構成の見直しを行い、プロキシサーバーを止め、プロキシ機能をメインサーバーに統合することとしました。
サービスの都合上、統合しプロキシサーバーを止めた後も、しばらく外部からプロキシ宛にリクエストが来てしまうため、リダイレクトさせる必要がありました。
Cloudflareでリダイレクトさせる
Cloudflareのダッシュボードにアクセスし、「ルール」の管理画面を開きます。
「ルールの作成」から「リダイレクトルール」を選択し、設定を行います。
Redirect Rulesの設定方法は3種類あります。
-
ワイルドカード パターン
- リダイレクト元URLのパターンを設定し、該当パターンに当てはまる場合に処理をさせる
-
カスタムフィルタ式
- URL以外に、ヘッダーやCookieなどを参照し、条件に合うパターンの場合に処理をさせる
-
すべての受信リクエスト
- 全てのリクエストで処理をさせる
今回は、ワイルドカードパターンで設定します。
リクエストURLにリダイレクト元のURLとなる https://mediaproxy-service.example.com/*
を、
ターゲットURLにリダイレクト先のURLとなる https://service.example.com/proxy/${1}
、
ステータスコードを301として設定しました。
これで、https://mediaproxy-service.example.com/hogehoge
にリクエストされたものが、https://service.example.com/proxy/hogehoge
に 301リダイレクトされるようになりました。
うまくリダイレクトされない場合
Cloudflareのリダイレクトを正常に動作させるには、CloudflareのDNSでプロキシされている必要があります。
DNSの管理画面で表示されるクラウドのマーク。これがオレンジの場合はプロキシされており、灰色やアイコンがない場合はプロキシされていません。
今回の場合、プロキシ用EC2インスタンスを落としたためDNS設定も修正する必要がありました。
とはいえ、このためだけに使わないサーバーやリソースを立てておくのも面倒です。
その場合は、Aレコードで、IPv4アドレスを192.0.2.1
宛てにすると良いでしょう。こうすることで、リダイレクトの処理を正常に行いつつ、リダイレクトパターンから外れたリクエストは破棄することができます。
DNSに設定していないURLをリクエストURLとしてRedirect Rulesで設定しようとしていた場合は以下のようなモーダルが表示され、簡単にセットアップすることができます。
まとめ
わざわざ専用サーバーを立てたり、ルーティングを頑張ったりせずとも、Cloudflareで簡単にリダイレクトさせることができました。ドメイン・DNSをCloudflareで管理している人は活用してみてはいかがでしょうか。

ちょっと株式会社(chot-inc.com)のエンジニアブログです。 フロントエンドエンジニア募集中! カジュアル面接申し込みはこちらから chot-inc.com/recruit/iuj62owig
Discussion