Webシステムの構成を学んでいると「ロードバランサー」と「リバースプロキシ」の違いで混乱する方も多いでしょう。
「どちらも似たような機能に見えるけど何が違うの?」「どう使い分けるの?」という疑問を持つ方はぜひ本記事をご覧ください。
本記事では、ロードバランサーとリバースプロキシの役割・仕組みの違い・共通点・実際の使い分けをわかりやすく解説していきます。
Webインフラを理解したい方はぜひ最後までご覧ください。
ロードバランサーとリバースプロキシの基本的な違い
それではまず、両者の基本的な違いについて解説していきます。
ロードバランサーとリバースプロキシはどちらも「クライアントとサーバーの間に置かれる中間コンポーネント」ですが、主な目的が異なります。
【ロードバランサーとリバースプロキシの目的の違い】
ロードバランサー:複数のサーバーに負荷を「均等に分散する」ことが主目的
リバースプロキシ:クライアントの代わりにサーバーにアクセスし「様々な付加機能を提供する」ことが主目的
ロードバランサーは「どのサーバーに振り分けるか」に特化した機能を持ちます。
リバースプロキシは「クライアントとサーバーの間で何ができるか」という付加価値機能(キャッシュ・圧縮・SSL終端・セキュリティフィルタ)を提供します。
現代のWebシステムでは両者の機能が重なっているツールも多いという点が混乱を招く原因です。
リバースプロキシの主な機能
リバースプロキシが提供する主な機能を見てみましょう。
| 機能 | 内容 |
|---|---|
| SSL/TLS終端 | HTTPS通信の暗号化・復号を引き受け、バックエンドへはHTTPで転送 |
| キャッシュ | 静的コンテンツをキャッシュしてサーバー負荷とレスポンス時間を削減 |
| 圧縮 | コンテンツをgzip・Brotliで圧縮してネットワーク転送量を削減 |
| セキュリティ | WAF機能・IPフィルタ・DDoS緩和 |
| URLリライト | URLを変換してバックエンドに転送 |
| 負荷分散 | 基本的な負荷分散機能(ロードバランサーと重複) |
nginxやApacheはリバースプロキシとして使われることが多く、基本的な負荷分散機能も持ちます。
ロードバランサーとリバースプロキシの比較表
| 比較項目 | ロードバランサー | リバースプロキシ |
|---|---|---|
| 主な目的 | 負荷分散 | 付加機能の提供 |
| 動作レイヤー | L4またはL7 | 主にL7(アプリケーション層) |
| キャッシュ機能 | 通常なし | あり |
| SSL終端 | できる(L7) | できる |
| URL書き換え | 通常なし | あり |
| 代表例 | AWS ALB・F5 BIG-IP | nginx・Apache・Squid |
近年は nginx・AWS ALBのようにロードバランサーとリバースプロキシの両方の機能を持つツールが主流になっています。
フォワードプロキシとリバースプロキシの違い
「プロキシ」にはフォワードプロキシとリバースプロキシという2種類があります。
フォワードプロキシはクライアント側に置かれ、「クライアントの代わりにインターネットにアクセスする」機能を提供します(企業のインターネット出口制御など)。
リバースプロキシはサーバー側に置かれ、「クライアントからサーバーへのリクエストを受け代わりにサーバーにアクセスする」機能を提供します。
リバースプロキシはバックエンドサーバーを隠蔽しセキュリティを高める効果もあります。
実際のWebシステム構成での使い分け
続いては、実際のWebシステム構成での使い分けを確認していきます。
典型的な構成パターン
実際のWebシステムでは次のような構成パターンが多く見られます。
【典型的なWebシステム構成】
インターネット → CDN → ロードバランサー(L7)
→ nginxリバースプロキシ
→ アプリサーバー1
→ アプリサーバー2
→ アプリサーバー3
外側からCDN・ロードバランサー・リバースプロキシという多段構成を取ることで、各層で異なる役割を分担させています。
nginxを使った組み合わせ構成
nginxはリバースプロキシとしてもロードバランサーとしても使える非常に汎用性の高いソフトウェアです。
nginxの upstream ディレクティブを使えばシンプルな負荷分散もできます。
小〜中規模のシステムではnginxを1台でリバースプロキシ・SSL終端・静的ファイル配信・負荷分散の複数役割に使うケースも多いでしょう。
クラウドでの使い分け(AWS)
AWSでは Application Load Balancer(ALB)がロードバランサーの役割を担い、ECS・EC2のコンテナやインスタンスに振り分けます。
CloudFrontはCDNとしてキャッシュ・セキュリティ・SSL終端のリバースプロキシ的な役割を担います。
AWS環境ではALB + CloudFront の組み合わせがリバースプロキシとロードバランサーの役割を分担する代表的な構成です。
まとめ
本記事では、ロードバランサーとリバースプロキシの役割の違い・比較・実際の使い分けについて詳しく解説しました。
ロードバランサーは「負荷分散」が主目的、リバースプロキシは「付加機能の提供(SSL・キャッシュ・セキュリティ)」が主目的という違いがあります。
現代のツール(nginx・AWS ALB)は両方の機能を持つことが多く、システムの要件に応じて役割を設計することが重要です。
ロードバランサーとリバースプロキシの役割を理解することは、信頼性の高いWebシステムを設計する上での基礎知識となるでしょう。
ぜひ本記事を参考に、自分のシステム構成の見直しに役立ててみてください。