タイトル: 負荷分散・プロキシ・CDN
SEOタイトル: 負荷分散・プロキシ・CDN とは|リバースプロキシ・ロードバランサ
| この記事の要点 |
|
負荷分散・プロキシ・CDN とは
大規模な Web サービスでは、ブラウザがアプリケーションサーバーと直接通信することはほとんどありません。間にプロキシ・ロードバランサ・CDN が入り、負荷分散、キャッシュ、SSL/TLS の終端、攻撃の遮断といった役割を分担しています。このカテゴリでは、それぞれの仕組みと代表的なソフトウェアの設定方法を解説します。
典型的な Web サービスでは、リクエストは次のような順に流れます。
ブラウザ → (社内ならフォワードプロキシ) → インターネット
→ CDN エッジ → ロードバランサ / リバースプロキシ → アプリサーバー群
それぞれの違い
| 種類 | 誰の代理か | 主な用途 | 代表的な実装 |
|---|---|---|---|
| フォワードプロキシ | クライアント | 社内から外部へのアクセス制御・ログ・キャッシュ | Squid |
| リバースプロキシ | サーバー | SSL 終端、バックエンドの隠蔽、キャッシュ、WAF | nginx、Apache |
| ロードバランサ | サーバー群 | 複数サーバーへの振り分け、ヘルスチェック | HAProxy、nginx、クラウド LB |
| CDN | サーバー(地理的に分散) | 静的ファイルのエッジ配信、DDoS 緩和 | Cloudflare、CloudFront |
リバースプロキシとロードバランサは機能が重なっており、nginx や HAProxy は両方の役割を 1 台でこなせます。「1 台のサーバーの前に置く」ならリバースプロキシ、「複数台に振り分ける」ならロードバランサと呼ぶ、くらいの理解で十分です。
読む順番
- フォワードプロキシ — 「代理で通信する」というプロキシの基本概念をつかむ
- リバースプロキシ — 向きが逆になると何がうれしいのか(SSL 終端・隠蔽)を理解する
- ロードバランサ — L4 と L7 の違い、ラウンドロビンなどの分散アルゴリズム、ヘルスチェック
- nginx リバースプロキシ設定 —
proxy_passとupstreamで実際に設定する - HAProxy — frontend / backend の考え方と設定例
- CDN — エッジキャッシュ、TTL、キャッシュ削除(パージ)の考え方
手を動かして試したい場合は、1・2 を読んだあと 4 の nginx 設定に進むのが近道です。
目的別の選び方
- 社員のインターネット利用を制御・記録したい → フォワードプロキシ
- アプリの前で HTTPS を受けたい、アプリを直接公開したくない → リバースプロキシ(nginx が手軽)
- サーバーを複数台にして負荷と障害に備えたい → ロードバランサ(自前なら HAProxy / nginx、クラウドならマネージド LB)
- 画像や JS・CSS の配信を速くしたい、海外利用者がいる → CDN
- サーバー更新後に変更が反映されない → CDN やリバースプロキシのキャッシュを疑う