Cloudflare Server
CDNとセキュリティ機能が統合されたエッジコンピューティングプラットフォーム。世界規模のネットワークで高速配信を実現。DDoS保護、WAF、AI防御機能を統合。
Webサーバー
Cloudflare Server
概要
Cloudflare Serverは、CDN(Content Delivery Network)とセキュリティ機能が統合されたエッジコンピューティングプラットフォームです。世界規模のネットワークインフラストラクチャを活用して高速なコンテンツ配信を実現し、同時にDDoS保護やBot対策などの包括的なセキュリティ機能を提供します。従来のWebサーバーとは異なり、エッジレイヤーでのサービス提供に特化しています。
詳細
Cloudflareは2010年に設立され、現在では世界320以上の都市にデータセンターを展開しています。2024年現在、世界のWebサイトの23.4%がCloudflareを利用し、年間23.9%という急成長を続けています。
主要な技術的特徴
- グローバルエニーキャストネットワーク: 全世界にリアルタイムで分散配置
- AI駆動型セキュリティ: 機械学習によるBot検出と脅威分析
- Workers プラットフォーム: サーバーレスエッジコンピューティング
- HTTP/3標準対応: 最新プロトコルによる高速化
- ゼロトラストアーキテクチャ: セキュリティファーストの設計
用途
- CDNとしてのコンテンツ高速配信
- DDoS攻撃からの保護
- Webアプリケーションファイアウォール(WAF)
- エッジコンピューティング・サーバーレス実行
- APIセキュリティ・レート制限
メリット・デメリット
メリット
- グローバルな高速配信: 世界中の拠点からの最適化されたコンテンツ配信
- 強力なセキュリティ: DDoS、Bot、マルウェアからの包括的保護
- 簡単なセットアップ: DNS変更のみで導入可能
- 豊富な分析機能: リアルタイムなトラフィック分析とインサイト
- スケーラビリティ: トラフィック急増時の自動的な負荷分散
- エッジコンピューティング: Workersによるサーバーレス実行
デメリット
- ベンダーロックイン: Cloudflare固有の機能に依存するリスク
- コストの増大: 大規模トラフィックでは高額になる可能性
- 設定の複雑さ: 高度な機能利用時の設定難易度
- 障害時の影響: Cloudflareダウン時にサービス全体が影響を受ける
- デバッグの困難さ: エッジレイヤーでの問題特定の複雑さ
参考ページ
書き方の例
DNS設定(基本的なプロキシ設定)
# Cloudflare DNSでのAレコード設定
A record: example.com -> 203.0.113.1 (Orange Cloud ON)
CNAME: www -> example.com (Orange Cloud ON)
Page Rules設定例
// キャッシュ設定
URL: example.com/static/*
Settings:
- Cache Level: Cache Everything
- Edge Cache TTL: 1 month
- Browser Cache TTL: 4 hours
// セキュリティ設定
URL: example.com/admin/*
Settings:
- Security Level: High
- Always Use HTTPS: On
- IP Geolocation Header: On
Cloudflare Workers サンプル
// 基本的なWorkerスクリプト
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
// APIエンドポイントの場合
if (url.pathname.startsWith('/api/')) {
return handleAPI(request)
}
// 静的コンテンツの場合
return fetch(request)
}
async function handleAPI(request) {
// レート制限チェック
const clientIP = request.headers.get('CF-Connecting-IP')
const rateLimitKey = `rate_limit:${clientIP}`
// CORS ヘッダー追加
const headers = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET,HEAD,POST,OPTIONS',
'Content-Type': 'application/json'
}
return new Response(JSON.stringify({message: 'Hello from Edge'}), {
headers: headers
})
}
WAFカスタムルール設定
// Cloudflare WAFカスタムルール例
// SQLインジェクション検出
(http.request.uri.query contains "union select" or
http.request.uri.query contains "drop table")
// 地理的ブロック
(ip.geoip.country ne "JP" and ip.geoip.country ne "US")
// User-Agent ブロック
(http.user_agent contains "bot" and not http.user_agent contains "Googlebot")
Transform Rules設定
// リクエストヘッダー変換
// ヘッダー追加: X-Real-IP
dynamic_value(ip.src)
// レスポンスヘッダー変換
// セキュリティヘッダー追加
{
"X-Frame-Options": "DENY",
"X-Content-Type-Options": "nosniff",
"X-XSS-Protection": "1; mode=block",
"Strict-Transport-Security": "max-age=31536000; includeSubDomains"
}
ロードバランシング設定
# Load Balancer設定例
load_balancer:
name: "web-servers"
description: "Main web server pool"
fallback_pool: "backup-pool"
pools:
- name: "primary-pool"
origins:
- name: "server-1"
address: "192.168.1.10"
weight: 100
- name: "server-2"
address: "192.168.1.11"
weight: 100
monitor: "health-check"
- name: "backup-pool"
origins:
- name: "backup-server"
address: "192.168.2.10"
weight: 100
monitors:
- name: "health-check"
type: "http"
method: "GET"
path: "/health"
interval: 60
timeout: 5
retries: 2