バックエンドが共有PaaSでDNSもオリジンも手を付けられない状況でCloudflare Waiting Roomを利用する

2021.06.01

クラスメソッドはCloudflareのFair Shotプロジェクトに賛同し、ワクチン接種を推進する自治体・医療機関・協力企業にデジタル待合室Cloudflare Waiting Roomを無償提供しています。

前回、Cloudflare Core機能を使ってオリジンに到達する前のトラフィックをうまくさばく方法やCNAMEセットアップで既存のネームサーバーを継続利用したままWaiting Roomを利用する方法を紹介しましたが、導入支援をしている中で、一部の予約サイトはバックエンドが汎用のPaaSでそれらの変更すらも難しい状況があることがわかってきました。

今回は予約サイトフロントエンドに新たなドメインを取得してPaaSオリジンに転送する場合のセットアップを紹介します。

注) Waiting Roomはまだ一般提供されておらず、現在、ワクチン接種関連のサイトのみにFair Shotプロジェクトの一部として提供されています。ご利用の際は用途の審査がございますので、こちらよりお問い合わせください。

やってみた

オリジンのACLの工夫

オリジン側のエンドポイントACLで、IPアドレスレンジやヘッダーなどでの制限がかけられるならば、別ドメインからの転送を安全、確実にさばいたセットアップが可能です。

例として、Cloudfrontのエンドポイントにカスタムヘッダーによるブロックリストを作成します。

カスタムヘッダー roommichadameyo 以外の場合を拒否します。

ブロックされました。

Cloudflareでのヘッダーモディフィケーションの設定

あらたなドメインを取得して登録したCloudflareのDNSに、エンドポイントをターゲットするCNAMEレコードを追加します。

waiting.classmethod.cf にこの状態でアクセスしても、名前解決後に到達するオリジンエンドポイントで拒否されます。

ページルールのヘッダーモディフィケーションをつかって、 waiting サブドメインを通過するリクエストヘッダーに、 room = michadameyo を追加します。

これでオリジンアクセスができるようになります。

URL変換ルールも適用可能

特定のホスト(サブドメイン)に来たリクエストをPaaS上で切ったパスに飛ばしたい要件も多いかと思いますが、Cloudflareのページルールは条件付きURL変換ルールも適用可能です。

Waiting Roomの設置

前回のとおり、このサブドメインに対してWaiting Roomを設置し、Queue Allでせき止めて挙動を見ます。

全部せき止めているため予測待ち時間が表示されませんが、このようにWaiting Roomにルーティングされます。

いかがでしょうか?

Fair Shotプロジェクトへは多数のお問い合わせをいただき、導入を続々とすすめていますが、まだまだやれますのでお問い合わせください