FIG-084

プロキシとリバースプロキシ — 同じ箱を、どちら側に置くか

Web 2026.09.07 公開 読了 約11分

プロキシ(proxy)とは「代理」のことです。通信の途中に1つ箱を挟み、本人のかわりに相手とやり取りさせる仕組みを指します。

ややこしいのはフォワードプロキシとリバースプロキシという2つの名前があること。でも中身はほとんど同じ箱で、違うのはどちら側に置くかだけです。クライアントのそばに置けばクライアントの身代わり、サーバーのそばに置けばサーバーの身代わりになります。図1で3つを切り替えて、パケットに書かれたIPがどう変わるか見てください。

PROXY — 身代わりの箱を、どちら側に置くか
🧑‍💻 クライアント 203.0.113.9
🤖 プロキシ 198.51.100.7 クライアントの身代わり
INTERNET
🤖 リバースプロキシ 192.0.2.10 サーバーの身代わり
web-01 10.0.0.11
web-02 10.0.0.12
web-03 10.0.0.13
いま流れている中身
送信元 — → 宛先 —
サーバーのログに残る送信元 クライアント本人 203.0.113.9
クライアントが知っている接続先 サーバー本人 web-01
DIRECT
誰も間に立たない、素の通信
クライアントが自分の名前(IP)で、サーバーに直接つなぎます。サーバーのログにはクライアントのIPがそのまま残り、クライアントは相手のサーバーが誰か知っています。上のタブで身代わりを挟んでみてください。
図1 — 箱を左に置けばクライアントが隠れ、右に置けばサーバーが隠れる

フォワードプロキシ — クライアントの身代わり

単に「プロキシ」と言ったら普通はこちらです。クライアント側に置き、外に出ていく通信をまとめて代理します。図1のフォワードプロキシで送ると、サーバーのログに残るのはプロキシのIPだけ。サーバーからは誰が本当の依頼主か分かりません。

この性質から、社内から外部サイトへのアクセスを一箇所に集めて記録・制限する、同じページを何度も取りに行かずキャッシュする、といった使い方をします。クライアントの側が「使うぞ」と設定して初めて経路に入る、というのも特徴です。

リバースプロキシ — サーバーの身代わり

同じ箱をサーバー側に置いたのがリバースプロキシです。クライアントから見るとそこが目的のサーバーそのものに見えます。図1でリバースに切り替えて何度か送ると、裏側の web-01 / web-02 / web-03 が入れ替わるのに、クライアントが知っている接続先は192.0.2.10 のまま変わりません。

裏に何台いるか、どれが今止まっているかを外から見えなくできるので、負荷分散、TLSの終端、攻撃の受け止めをここで引き受けられます。フォワードと違い、クライアントは何も設定しません。存在に気づかないまま通っています。

置く場所が違うだけで、隠れる相手が反転する

2つを分けているのは「誰の代理として立っているか」だけです。フォワードはクライアントを隠し、リバースはサーバーを隠す。図1の2枚のカードが、モードを切り替えるたびに反対側だけ変わるのはそのためです。

なお、リバースプロキシが本当の送信元を裏のサーバーに伝えたいときは、X-Forwarded-For というヘッダーに元のIPを書き足して渡します。裏のサーバーが「アクセス元はいつも同じIP」に見えて困るのは、この受け渡しが抜けているときです。

用語ミニ辞書
プロキシ
通信を代理する中継役。本人のかわりに相手とやり取りする。
フォワードプロキシ
クライアント側に置く代理。サーバーからは依頼主が見えなくなる。
リバースプロキシ
サーバー側に置く代理。クライアントからは裏の構成が見えなくなる。
負荷分散
リバースプロキシが裏の複数サーバーへ振り分けること。
X-Forwarded-For
本当の送信元IPを裏のサーバーへ伝えるためのHTTPヘッダー。

まとめ

プロキシは「間に立つ1つの箱」でしかありません。それをクライアントの前に置けばフォワード、サーバーの前に置けばリバース。名前で覚えるより、どちらを隠したいのかで考えると迷いません。図1の2枚のカードを見ながらタブを往復させると、その反転がそのまま確認できます。