FE EXAM

リバースプロキシ(サーバ側の窓口役)

外部からの要求を受けて内部のサーバへ振り分ける中継サーバ。

DIAGRAM
外部クライアント
リバースプロキシ
内部サーバ
インターネット側(外部)利用者A利用者B利用者Cリバースプロキシサーバ側の窓口負荷分散・振り分けSSL終端内部ネットワーク(サーバ群)Webサーバ1Webサーバ2Webサーバ3外部からは「リバースプロキシ」だけが見え、内部サーバの構成は隠れる

外部の利用者はまずリバースプロキシにアクセスします。リバースプロキシが空いている内部サーバへ要求を振り分け、その応答を利用者へ返します。

解説

📌
リバースプロキシとは

外部利用者リバースプロキシサーバ1サーバ2サーバ3

リバースプロキシとは、外部からの要求を受けて内部のサーバへ振り分ける中継サーバです。サーバ側に配置され、外部の利用者にとっての「窓口」として働きます。

外部の利用者(クライアント)は、本来の内部サーバを直接知る必要がありません。すべての要求をまずリバースプロキシが受け取り、適切な内部サーバへ取り次ぎます。外部からはリバースプロキシだけが見え、その後ろにあるサーバの数や構成は隠れます。

身近な例で考えると、大きなホテルのフロントに似ています。来客はまずフロントに用件を伝え、フロントが空いている担当者や部屋へ案内します。来客がホテルの内部構造を知らなくても、フロントが正しく取り次いでくれるのと同じ働きです。

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

フォワード(内部端末の代理)内部端末プロキシ外部リバース(外部要求を受付)外部プロキシ内部SV

プロキシには大きく2種類あり、中継の向きが反対です。混同しやすいので、誰の代理かをセットで覚えると整理できます。

項目フォワードプロキシリバースプロキシ
誰の代理か内部の端末(クライアント)内部のサーバ
中継の向き内部 → 外部外部 → 内部
配置場所クライアント側サーバ側
隠れるもの内部端末の身元サーバの構成

ふつう「プロキシサーバ」とだけ言うときはフォワードプロキシを指し、社内の端末が外部へアクセスする代理を務めます。一方リバースプロキシは「逆(リバース)」の名のとおり、外から来る要求をサーバ側で受け止めるのが役目です。

📌
用途

負荷分散サーバへ振り分けSSL終端復号をまとめる構成の隠蔽内部を保護

リバースプロキシは、多くの利用者からアクセスされるWebサービスの入口として使われます。窓口を一本化することで、いくつもの便利な役割を担えるからです。

代表的な用途は次のとおりです。
負荷分散(ロードバランシング):同じ役割の内部サーバが複数あるとき、要求を空いているサーバへ振り分けて1台に集中させない
SSL終端:暗号化通信(=盗み見を防ぐために通信内容を暗号化すること)の復号をまとめて行い、内部サーバの負荷を軽くする
構成の隠蔽:外部から内部サーバの数や住所が見えないようにし、攻撃を受けにくくする
キャッシュ:よく要求されるコンテンツを保存しておき、内部サーバへ届く前に素早く返す

身近な例で考えると、人気店の整理係に似ています。行列を見て空いているレジへ客を案内し(負荷分散)、混雑時にも全体がスムーズに回るように整える──こうした調整役を、Webサービスの入口で担うのがリバースプロキシです。

📌
リクエストが届くまでの流れ

利用者リバースプロキシサーバAサーバB1. 要求を受け取る2. 空きサーバを選ぶ3. 選んだサーバへ転送する

リバースプロキシを通るときに、通信は3つのステップで処理されます。この流れを理解すると、「なぜリバースプロキシが間に入るのか」がよく分かります。


① 要求を受け取る:利用者(クライアント)からの要求をリバースプロキシだけが受け取る。内部サーバはこの段階では何も知らない
② 振り分け先を選ぶ:現在どのサーバが空いているかを確認し、ふさわしい内部サーバを1台選ぶ
③ 転送して返す:選んだサーバへ要求を届け、処理結果をリバースプロキシが受け取って利用者へ返す

なぜこの流れにするのか。利用者とサーバが直接やりとりしてしまうと、内部サーバのIPアドレス(=ネットワーク上の住所)が外部に見えてしまい、攻撃を受けやすくなります。リバースプロキシが間に入ることで、内部の構成を隠しながら柔軟に処理を振り分けられます。まるで受付担当者がすべての来客を取り次ぐことで、各部署の電話番号を外部に知られずに済むのと同じ仕組みです。

📌
SSL終端の仕組み

利用者暗号化HTTPS通信(SSL/TLS)リバースプロキシSV1SV2復号ここで内部は平文

SSL終端(SSLターミネーション)とは、暗号化された通信の復号(=暗号を解いて元のデータに戻す処理)をリバースプロキシでまとめて引き受ける仕組みです。

なぜリバースプロキシにまとめるのか。暗号の復号は計算負荷が高い処理です。内部サーバが10台あれば、それぞれが個別に復号処理を行う必要があります。リバースプロキシに一本化すれば、復号は1か所だけで済み、各内部サーバはその重い処理から解放されます。
利用者 → リバースプロキシ:暗号化された通信(HTTPS=盗み見を防ぐためのWeb通信)
リバースプロキシ → 内部サーバ:復号済みの通常の通信(内部ネットワークは信頼できるため)

身近な例で考えると、外国語の手紙を全部まとめて翻訳してから各担当に渡す通訳係のようなものです。各担当が自分で翻訳するより、通訳が一括で処理した方が全体の効率が上がります。

📌
キャッシュの仕組み

利用者リバースプロキシキャッシュあり内部SVHIT→即返却MISS→SVへ2回目以降の同じ要求は内部SV不要で高速に返せる

キャッシュ(=一時保存)とは、リバースプロキシがよく要求されるコンテンツ(Webページや画像など)を手元に保存しておき、同じ要求が来たとき内部サーバへ届かせずに即座に返す仕組みです。

なぜこれで速くなるのか。通常は「利用者→リバースプロキシ→内部サーバ→リバースプロキシ→利用者」という往復が必要です。内部サーバへのアクセスにはデータベース(=情報を管理する仕組み)への問い合わせなど重い処理が伴うことが多く、時間がかかります。キャッシュがあれば内部サーバへ問い合わせるステップを省けるため、応答が速くなります。
キャッシュHIT:保存済みの内容があれば即座に返す。内部サーバへの問い合わせゼロ
キャッシュMISS:保存がなければ通常通り内部サーバへ問い合わせ、結果を保存してから返す

身近な例で考えると、よく聞かれる質問の回答を手帳にメモしておく窓口担当者のようなものです。同じ質問が来るたびに奥の部署へ確認しに行かなくて済むので、来客への対応がずっと速くなります。

練習問題

🎯
基本情報技術者 練習問題

Q1.リバースプロキシの役割として最も適切なものはどれか。
A.内部の端末に代わって外部へアクセスする
B.外部からの要求を受けて内部のサーバへ振り分ける
C.IPアドレスをドメイン名へ変換する
D.ファイルを圧縮する
Q2.フォワードプロキシとリバースプロキシの違いとして適切なものはどれか。
A.フォワードは内部端末の代理、リバースは外部要求の受付という向きの違い
B.フォワードは暗号化し、リバースは暗号化しない
C.両者に違いはない
D.フォワードはIPで、リバースはMACで判断する
Q3.リバースプロキシのSSL終端機能の説明として適切なものはどれか。
A.暗号化通信の復号をリバースプロキシでまとめて行い、内部サーバの負荷を軽くする
B.すべての通信を遮断する
C.IPアドレスを割り当てる
D.データを物理的に削除する

関連コンテンツ