リバースプロキシとは?仕組みと用途を解説

リバースプロキシとは?仕組みと用途を解説

リバースプロキシは、WebサイトやWebアプリの前段に置かれ、利用者からのリクエストをいったん受け取ってから、後ろにあるWebサーバーへ転送する仕組みです。

NginxやCloudflareなどを調べるとよく出てくる言葉ですが、普通の共用レンタルサーバー利用者が自分で設定する必要はほとんどありません。

30秒でわかる結論

  • リバースプロキシは、Webサーバーの前段で利用者からの通信を受け取る中継サーバー
  • 利用者 → リバースプロキシ → オリジンサーバーの順で通信する
  • 主な用途は負荷分散、キャッシュ、TLS終端、セキュリティ、オリジンの保護
  • フォワードプロキシは利用者側、リバースプロキシはサーバー側に置く点が違う
  • NginxはWebサーバーだけでなくリバースプロキシやロードバランサーとしても使える
  • CloudflareのようなCDNもリバースプロキシ型で動作する構成がある
  • 共用レンタルサーバー利用者は、通常は仕組みを理解するだけで十分
  • VPSで独自構成を作る場合は、転送先、ヘッダー、HTTPS、障害時の挙動まで理解して設定する

リバースプロキシとは?

リバースプロキシは、クライアントとWebサーバーの間に入り、クライアントからのリクエストを後段のサーバーへ転送するサーバーです。

1.利用者
ブラウザからアクセス
2.リバースプロキシ
リクエストを受け取る
3.オリジンサーバー
実際のWeb処理を行う
4.レスポンスを利用者へ返す

利用者から見ると、通常はリバースプロキシの後ろに何台のWebサーバーがあるかは意識しません。

初心者向けに言うと

リバースプロキシは、Webサーバーの「受付係」です。外から来たアクセスを受け取り、適切な裏側のサーバーへ渡します。

オリジンサーバーとは?

リバースプロキシの後ろで、実際のWebページやアプリケーションを提供するサーバーをオリジンサーバーと呼びます。

構成例

利用者 → Cloudflare → VPS上のNginx / WordPress

この場合、Cloudflareが前段のリバースプロキシとして通信を受け取り、その後ろにあるVPSがオリジンサーバーになります。

フォワードプロキシとの違い

「プロキシ」と「リバースプロキシ」は、どちらも通信を中継しますが、守る側・代理する側が違います。

項目 フォワードプロキシ リバースプロキシ
置く場所 利用者側 Webサーバー側
代理する対象 クライアント サーバー
主な用途 アクセス制御・中継 負荷分散・キャッシュ・保護
利用者から見える接続先 外部Webサイト リバースプロキシ

覚え方

フォワードプロキシは利用者の前、リバースプロキシはサーバーの前と覚えると分かりやすいです。

用途1.複数サーバーへ負荷分散する

アクセスが多いサイトでは、1台のWebサーバーだけで処理せず、複数台へアクセスを振り分けることがあります。

利用者
リバースプロキシ
WebサーバーA
WebサーバーB
WebサーバーC

Nginxでは複数のupstreamサーバーを定義し、HTTPリクエストを複数サーバーへ振り分けるロードバランサーとして利用できます。

負荷分散が必要になる例

1台では処理しきれない大量アクセスがあり、同じWebアプリを複数サーバーで動かしている場合です。

用途2.キャッシュでオリジン負荷を減らす

リバースプロキシは、オリジンサーバーから受け取ったレスポンスをキャッシュし、条件が合えば次回アクセスへそのまま返すことがあります。

キャッシュなし

100人アクセス → 100回オリジンサーバーで処理

キャッシュあり

最初のアクセスだけオリジンで処理 → 以降はリバースプロキシのキャッシュから返す

これにより、PHPやデータベース処理を減らしやすくなります。

すべてをキャッシュしてよいわけではない

ログイン画面、カート、会員情報など利用者ごとに内容が変わるページを誤って共有キャッシュすると、重大な情報漏えいにつながる可能性があります。

用途3.TLS終端を行う

HTTPS通信をリバースプロキシ側で受け取り、TLSの暗号化・復号を前段で処理する構成があります。

これをTLS終端と呼びます。

ブラウザ
HTTPS
リバースプロキシ
TLSを処理
オリジンサーバー

前段だけHTTPSなら安全とは限らない

リバースプロキシからオリジンサーバーまでがインターネット経由なら、その区間もHTTPSで暗号化する構成が一般的です。前段だけ暗号化して終わりにしないようにします。

用途4.オリジンサーバーを直接公開しない

リバースプロキシ型のCDNやセキュリティサービスを前段に置くと、利用者はオリジンサーバーへ直接アクセスせず、まず前段サービスへ接続します。

Cloudflareも、リバースプロキシとして前段に入り、HTTP/HTTPS通信をCloudflare経由でオリジンへ送る構成を説明しています。

オリジン保護

オリジンサーバーへの直接アクセスを制限できれば、DDoS対策やWAFなどの前段保護を通さない通信を減らせます。

DNSをCloudflareにしただけでは同じではない

CloudflareではDNSレコードを「Proxied」にした場合にHTTP/HTTPS通信がCloudflareを経由します。「DNS only」ではDNS解決だけを行い、通信はオリジンへ直接届きます。

用途5.複数のアプリを1つの入口で振り分ける

1台のVPS内で複数アプリを動かし、URLやホスト名によって転送先を分けることもできます。

例

  • example.com/ → WordPress
  • example.com/api/ → Node.jsアプリ
  • admin.example.com → 管理アプリ

利用者は同じドメイン・同じHTTPS入口へアクセスし、リバースプロキシが裏側のサービスへ振り分けます。

Nginxとリバースプロキシの関係

NginxはWebサーバーとして有名ですが、公式にもHTTP Web server、reverse proxy、content cache、load balancerなど複数の役割を持つソフトウェアとして説明されています。

Nginx公式の初心者向けガイドでも、リクエストを受け取り、別のサーバーへ転送し、そのレスポンスをクライアントへ返すプロキシ構成が解説されています。

Nginx=リバースプロキシ専用ではない

Nginxは静的ファイルを直接配信するWebサーバーにも、別のアプリへ転送するリバースプロキシにも、複数サーバーへ振り分けるロードバランサーにも使えます。

CDNとリバースプロキシは同じ?

同じ意味ではありません。

用語 意味
リバースプロキシ オリジンサーバーの前段で通信を中継する仕組み
CDN 複数拠点からコンテンツを効率よく配信する仕組み

ただし、CloudflareのようにCDNサービスがリバースプロキシとして動作する構成はあります。

関係を整理

「CDN=必ずリバースプロキシ」ではありませんが、リバースプロキシ方式を使うCDNサービスはあります。

ロードバランサーとの違い

ロードバランサーは、複数のサーバーへ負荷を分散する役割を持つ仕組みです。

リバースプロキシは負荷分散以外にも、キャッシュ、TLS終端、アクセス制御などを行えます。

機能 リバースプロキシ ロードバランサー
リクエスト中継 ○ ○
複数サーバーへ分散 可能 主目的
キャッシュ 可能 製品・構成による
TLS終端 可能 可能な製品あり

実際の製品では機能が重なるため、「この製品は必ずどちら」と単純に分けられない場合があります。

WordPressでリバースプロキシを使うときの注意点

元のHTTPS情報を正しく渡す

前段でHTTPSを終端し、後段へHTTPで転送する構成では、WordPressが「自分はHTTPでアクセスされている」と誤認すると、HTTPSへのリダイレクトループが起きる場合があります。

元のIPアドレスを確認できるようにする

リバースプロキシを通すと、オリジンサーバーから見える接続元がプロキシのIPになることがあります。アクセスログや制限で元の利用者IPが必要なら、信頼できるプロキシから渡されるヘッダーを正しく扱う必要があります。

キャッシュ対象を間違えない

WordPress管理画面、ログイン中ページ、カート、会員ページなどは共有キャッシュ対象から除外する設定が必要です。

ヘッダーを無条件に信用しない

X-Forwarded-Forなどのヘッダーは、構成を理解せず無条件に信用すると送信元IPの偽装につながることがあります。信頼できるリバースプロキシから受け取った場合だけ利用するよう設定します。

リバースプロキシを自分で設定する必要はある?

共用レンタルサーバー 必要度 ★☆☆☆☆

通常は事業者側が構成します。利用者がNginx設定を直接変更する必要はほぼありません。

普通のWordPressブログ 必要度 ★☆☆☆☆

高速化目的だけで自前導入する必要はありません。まずサーバー標準のキャッシュやCDNを確認します。

VPSでWebアプリ運用 必要度 ★★★★☆

Nginxを前段に置き、Node.jsなどのアプリへ転送する構成でよく使います。

複数サーバー運用 必要度 ★★★★★

負荷分散、障害切り替え、TLS終端などで重要になります。

リバースプロキシを使うメリット

  • 複数サーバーへ負荷分散できる
  • キャッシュでオリジン負荷を減らせる
  • TLS処理を前段へ集約できる
  • オリジンサーバーを直接公開しない構成にできる
  • WAFやアクセス制御を前段に集約しやすい
  • 複数アプリを1つの入口で振り分けられる

リバースプロキシの注意点

  • 設定を間違えると502 Bad Gatewayやリダイレクトループが起きる
  • 前段が停止すると全アクセスへ影響する場合がある
  • キャッシュ設定ミスで古い内容を返すことがある
  • 元IPやHTTPS情報の受け渡し設定が必要になる場合がある
  • 障害箇所が1段増えるためログ確認が重要になる

構成が複雑になる

「高速になりそう」という理由だけで追加すると、障害切り分けが難しくなることがあります。必要な用途があるときに導入してください。

502 Bad Gatewayとの関係

リバースプロキシが後段のオリジンサーバーから正常な応答を受け取れないと、502 Bad Gatewayになることがあります。

確認ポイント

  • オリジンサーバーが起動しているか
  • 転送先IP・ポートが正しいか
  • ファイアウォールで遮断されていないか
  • アプリケーションが異常終了していないか
  • リバースプロキシのエラーログに原因がないか

このため、502エラーの原因調査では「利用者 → リバースプロキシ → オリジン」のどこで通信が止まっているかを切り分けます。

教科書判定

教科書判定

共用サーバー利用者は「Webサーバーの前段で通信を受ける仕組み」と理解すれば十分

普通のWordPressブログや会社サイトでは、自分でリバースプロキシを構築する必要はほとんどありません。CDNやレンタルサーバー側ですでに使われている場合もあります。

VPSでNode.jsアプリを公開する、複数サーバーへ負荷分散する、Cloudflareを前段に置くなどの構成になったときに、転送・キャッシュ・TLS・元IPの扱いまで詳しく理解してください。

FAQ

Q.リバースプロキシとプロキシの違いは?

一般的なフォワードプロキシは利用者側の代理、リバースプロキシはWebサーバー側の代理として通信を中継します。

Q.Nginxはリバースプロキシですか?

Nginxはリバースプロキシとして使えますが、それだけではありません。Webサーバー、キャッシュ、ロードバランサーなどの役割にも使えます。

Q.Cloudflareはリバースプロキシですか?

CloudflareでDNSレコードをProxiedにすると、HTTP/HTTPS通信がCloudflareを経由するリバースプロキシ構成になります。DNS onlyでは通信はオリジンへ直接届きます。

Q.WordPress高速化のために自分で導入すべきですか?

普通の共用レンタルサーバー利用者なら、まず標準のキャッシュ・CDN機能を使えば十分です。自前のリバースプロキシはVPSなどで明確な目的がある場合に検討します。

Q.リバースプロキシで502が出るのはなぜ?

後段のオリジンサーバーへ接続できない、転送先ポートが違う、アプリが停止しているなど、プロキシが正常な応答を受け取れない場合に発生します。

まとめ

この記事の結論

  • リバースプロキシはWebサーバーの前段で通信を中継する仕組み
  • フォワードプロキシは利用者側、リバースプロキシはサーバー側
  • 負荷分散、キャッシュ、TLS終端、セキュリティなどに使える
  • Nginxはリバースプロキシやロードバランサーとして利用できる
  • CloudflareもProxied設定ではリバースプロキシとして通信を中継する
  • WordPressではキャッシュ、元IP、HTTPS情報の扱いに注意する
  • 設定ミスは502やリダイレクトループの原因になる
  • 共用サーバー利用者は通常、自分で設定する必要はない
次に読む

「ロードバランサーとは?負荷分散の仕組みを解説」もあわせて確認してください。