リバースプロキシ

会社の1階にある受付窓口のように、訪問者のリクエストを一番最初に受け止めて適切な部署へとつなぎ、本物のオフィスを守るドアマンのような存在です。

定義 リバースプロキシ(Reverse Proxy)は、インターネットの利用者と実際のWebサーバーの間に立ち、リクエストを代わりに受け取って転送する中継サーバーです。利用者が内部システムに直接アクセスするのを防ぎながら、複数のサーバーへ仕事をバランスよく分散し、サイトのセキュリティや表示速度を高める玄関口(ゲートウェイ)の役割を果たします。

ホテルのフロントデスクをイメージしてみてください

ホテルに入ったお客さんは、客室や厨房へいきなりズカズカと入っていくことはありませんよね。まずは1階ロビーのフロントデスクに立ち寄って用件を伝え、スタッフが適切な部屋を案内したり担当部署に連絡を取ってサービスを提供します。

インターネットのサービスも、これとまったく同じ仕組みで動いています。スマートフォンやパソコンでWebサイトを開くとき、実際のデータやプログラムが動いている大元のコンピューター(Webサーバー)に直接つながっているわけではありません。入口にしっかりと構えたリバースプロキシが、訪問者のリクエストを最初に受け止めているのです。

一般的に「プロキシ」と呼ばれるもの(フォワードプロキシ)は、利用者側に立って利用者の素性を隠す代理人の役割を果たします。それに対してリバースプロキシは、サーバー側の玄関口を守るドアマンとして、内部の本物のサーバーがどこに何台あるかを外部から見えないようしっかり隠す役割を担っています。

リバースプロキシ動作原理図 クライアント (外部ユーザー) リバースプロキシ (門番・保護) 内部Web (隠れた実サーバー)

ドアマンを置くと、どんなメリットがあるのでしょうか?

まず最大のメリットは、強固なセキュリティです。攻撃者はリバースプロキシの背後に隠された本物のサーバーの実際の住所(IPアドレス)を知ることができません。外部からのDDoS攻撃や不審なリクエストを、玄関口のプロキシサーバーが第1防衛線として遮断してくれるため、中核となるシステムを安全に守れます。

アクセスが殺到したときに仕事を分散するのも得意技です。特定のサーバーだけにリクエストが集中してダウンしてしまわないよう、背後に控える複数のサーバーへ均等に仕事を割り振る負荷分散(ロードバランシング)を行います。

さらに、よくアクセスされる画像やWebページをプロキシが一時的に記憶してすぐに返す「キャッシュ」機能も備えています。内部サーバーに毎回重い計算をさせず、入口でサッと手渡してくれるため、ユーザーが画面を見るまでの表示速度が劇的に向上します。

もう少し技術的な仕組みを見てみましょう

リバースプロキシは、複雑な暗号化の鍵を開け閉めする作業(SSL/TLS処理)も一身に引き受けます。利用者とやり取りする暗号化通信をプロキシが前面で一括して解読し、内部ネットワークのサーバーへは負担の少ない形で渡すことで、内部サーバーの処理負荷を大幅に軽減してくれます。

また、システムのメンテナンスや新機能のアップデート時にも欠かせない存在です。一部のサーバーを停止させる必要がある場合でも、ユーザーにはエラー画面を一切見せず、正常に動いている別のサーバーへ静かに通信を迂回させる無停止デプロイを実現します。

私たちが普段利用している大手ポータルサイトやネット通販アプリでも、NginxやHAProxy、Cloudflareといったソフトウェアがリバースプロキシとして導入され、膨大なアクセスを安全かつスムーズにさばいています。

🤔 よくある誤解

✕ 誤解

リバースプロキシと通常のプロキシ(フォワードプロキシ)は、名前が違うだけでまったく同じものである。

✓ 事実

フォワードプロキシは「ユーザー」を代理して利用者の身元を隠しますが、リバースプロキシは「サーバー」を代理してサーバーの実際の場所や内部構成を隠します。守るべき対象の向きが正反対なのです。

🧺 日常で出会う場面

1 アクセスが集中する大学の履修登録サイトや人気チケットの販売サイトで、トラフィックを複数のサーバーへ分散させるときに使われます。
2 外部からの直接的なサイバー攻撃からデータベースや主要なWebサーバーを守るため、ネットワークの最前線に設置されます。
💡 つまり ひとことで

リバースプロキシは、サーバーの最前線でリクエストを代行して受け取り、セキュリティ保護や負荷分散を行うスマートな玄関口(ドアマン)サーバーです。