Web サイトや Web アプリケーションを最適化するため、Cloudflare は DNS ↗ と CDN ↗ を提供し、ドメインとの間の Web トラフィックを リバースプロキシ ↗ します。
ドメインネームシステム(DNS)はインターネットの電話帳です。cloudflare.com のようなドメイン名を、103.21.244.0 のような数値のインターネットプロトコル(IP)アドレスに変換します。
IP アドレスは Web サイトの所在地のようなもので、ドメイン名は人が読める名前です。
DNS クエリは行き先を尋ねることに似ており、DNS レコードは「何がどこにあるか」の正式な情報源です。DNS レコードは権威 DNS サーバー ↗ にあり、そのドメインの Web コンテンツやサービスをホストするサーバーの IP アドレス ↗ などを提供します。この情報で、インターネットブラウザーは Web サイトやアプリの場所を知り、HTTP ↗ で訪問者に表示できます。
Web サイトやアプリケーションを Cloudflare にオンボードすると、Cloudflare がそのドメインのプライマリ権威 DNS プロバイダーになります。プライマリ権威 DNS プロバイダーとして、Cloudflare はドメインの DNS クエリに応答します。ドメインの DNS レコードは、Cloudflare ダッシュボードまたは API で管理します。
ドメインのステータス がアクティブで、問い合わせた DNS レコードが proxied の場合、Cloudflare は DNS テーブルに定義したオリジン IP アドレスではなく、エニーキャスト IP アドレス を返します。
ドメインのステータスは、ネームサーバーを更新 して Cloudflare を指し、認証されるとアクティブになります。プロキシステータス は、特定の DNS レコードへのクエリを Cloudflare がどう扱うかを決めます。エニーキャスト IP アドレス は、トラフィックを Cloudflare のネットワークに分散するために使います。これにより、サイト速度を最適化しつつ、Web サイトやアプリを DDoS ↗ などの攻撃から保護します。
リバースプロキシは、Web サーバーの手前に置くサーバー群です。リクエストを Web サーバーに転送するか、Web サーバーの代わりに処理します。セキュリティ、パフォーマンス、信頼性を高めるために導入することが多いです。
Cloudflare がドメインの DNS クエリを受け取ると、応答は DNS テーブルの設定 で決まります。対象は レコードの種類、レコードの プロキシ対象かどうか、プロキシステータス です。
DNS テーブルのレコードが proxied の場合、そのレコードの HTTP/HTTPS トラフィックは、クライアントとオリジンサーバーの間で Cloudflare を経由します。ドメインのステータスがアクティブなら、プロキシされた DNS レコードへの HTTP/HTTPS リクエストはすべて Cloudflare を通ります。
Cloudflare をリバースプロキシとして使う利点は次のとおりです。
- ロードバランシング。リバースプロキシは、受信トラフィックを複数のサーバーに均等に分散し、1 台が過負荷になるのを防ぎます。サーバーが完全に停止しても、ほかのサーバーがトラフィックを引き継げます。
- 攻撃からの保護。リバースプロキシがある場合、Web サイトやサービスはオリジンサーバーの IP アドレスを公開する必要がありません。攻撃者は DDoS などの標的型攻撃を仕掛けにくくなります。攻撃対象はリバースプロキシ(Cloudflare の CDN など)だけになり、より厳しいセキュリティと、サイバー攻撃を防ぐためのリソースを備えています。
- キャッシュ。リバースプロキシはコンテンツをキャッシュでき、パフォーマンスが向上します。たとえば、パリのユーザーがロサンゼルスに Web サーバーがあるリバースプロキシ済みサイトにアクセスすると、パリのローカルなリバースプロキシサーバーに接続し、そこが LA のオリジンサーバーと通信します。プロキシサーバーは応答データをキャッシュ(一時保存)できます。その後パリから同じサイトを見るユーザーは、パリのリバースプロキシからローカルキャッシュを受け取るため、応答が大幅に速くなります。
- SSL 暗号化。SSL/TLS は必須です。SSL/TLS 証明書がないと、訪問者のブラウザーにサイトやアプリケーションが安全でないという警告が出ます。一方、クライアントごとに SSL(または TLS)通信を暗号化・復号するのは、オリジンサーバーにとって計算コストが高いです。リバースプロキシですべての受信リクエストを復号し、すべての送信応答を暗号化すれば、オリジンサーバーの貴重なリソースを空けられます。