リバースプロキシの用途7つ|リバースプロキシの仕組みやメリットも解説

リバースプロキシの用途7つ|リバースプロキシの仕組みやメリットも解説のアイキャッチイメージ

リバースプロキシとは?


リバースプロキシは、代理人のような形でクライアントとWebサーバの間に入り、クライアントからの要求や、サーバからの応答を中継する装置です。幅広い用途で使用されるリバースプロキシは、インフラ構築において重宝される存在です。インターネットからの不正アクセスを防止したり、負荷を分散したりと、その用途は多岐にわたります。この記事では、実用的なリバースプロキシの使い方を例とともに解説します。

リバースプロキシの仕組み


リバースプロキシの基本的な役割としてあげられるクライアントからの要求やサーバからの応答を中継するというのはどういうことなのか、一般的なhttpアクセスを例に仕組みを説明します。以下は、クライアントがリバースプロキシの配置されているwww.example.comにアクセスしたときの流れです。

・クライアントがwww.example.comにアクセスすると、そのリクエストはリバースプロキシが受け取る。
・リバースプロキシはWebサーバに対して、自分自身をクライアントとしてリクエストを転送する。
・Webサーバは、リバースプロキシに対して応答を返す。
・リバースプロキシはクライアントに対して、自分自身をサーバとして応答を返す。

ここで重要なことがあります。それはクライアントからは、自身のリクエストに対する応答をするWebサーバにみえるのは、リバースプロキシだということです。実際に存在するWebサーバの存在は隠蔽され、リバースプロキシがWebサーバのように振る舞います。また、リバースプロキシは、クライアントからのリクエストをWebサーバに転送するか否か、などといった選択ができるのです。

プロキシとリバースプロキシの違い


リバースプロキシとは似て非なるものであるプロキシについて説明します。プロキシとリバースプロキシの大きな違いは、Webサーバの存在が隠蔽されるかどうかという点です。プロキシは、リバースプロキシと異なり、Webサーバの存在は隠蔽されません。クライアントとWebサーバの間に入り、代理人のような仕事だけをするのが、プロキシの特徴です。

プロキシを使うメリットとは?

では、プロキシを使うメリットはどこにあるのでしょうか。答えは、クライアントからWebサーバへのアクセスが遮断されていたとしても、リバースプロキシを中継することでアクセスできる点です。たとえば、クライアントのIPアドレスがWebサーバのアクセス制限にかかっていたとしても、プロキシを経由する場合は、Webサーバから見たクライアントがプロキシになるので、何の問題もないということです。これは、非常に大きなメリットといえます。

リバースプロキシの用途7つ


これまで、リバースプロキシの仕組みについて説明しました。次に、リバースプロキシのさまざまな用途について説明します。リバースプロキシは、これまでに説明した仕組みのおかげで、負荷分散やキャッシュなど、さまざまな用途に利用できます。ここでは用途のうち、実用的な7つをご説明します。

1:負荷の分散

リバースプロキシを1台用意することで、クライアントに対して単一サーバとして振る舞えます。つまり、リバースプロキシの裏側にWebサーバが何台配置されていても、クライアントからはリバースプロキシ1台にみえるのです。これにより、クライアントには単一サーバとして振る舞いながら、大量のアクセスを処理することが可能なシステムを構築できます。この考え方は、ロードバランサーという負荷分散に特化したものと同じです。

2:セキュリティ強化

リバースプロキシがクライアントからの要求を受け取る際、その要求を解析することで、セキュリティの強化に役立ちます。具体的な方法として、以下があげられます。

・クライアントのIPアドレスを限定するIP制限
・Basic認証
・マルウェアスキャン

これらは、どれも不特定多数のアクセスを遮断する効果があります。このような手法を用いることで、Webサーバやそこで稼働するアプリケーションなどがインターネット上に晒されることがなくなるので、セキュリティの強化として非常に有効です。

3:SSL通信の肩代わり

リバースプロキシ1台が、多くのWebサーバへのアクセスを中継する場合、SSLによる暗号化は、クライアントとリバースプロキシの間で済みます。Webサーバ全てをSSLに対応させる必要がなく、証明書の管理が最小限で良いのが魅力です。クライアントからはhttpsによる安全な通信が担保され、リバースプロキシからWebサーバは、httpで通信することが可能になります。

4:異なるアプリケーションの統合

リバースプロキシ1台に対して、役割の異なるWebサーバを複数用意することで、1つのURL(IPアドレス)に異なるアプリケーションを統合できます。たとえば、hoge.example.comの場合、PHPによる動的ページを応答させる、fuga.example.comの場合、静的ページを応答させる、といったことが可能になります。今回はサブドメインを利用した例ですが、example.com/hoge/など、パスを利用する方法もあります。

5:Webサーバの応答のキャッシュ

クライアントからのアクセス頻度が多いコンテンツの内容をキャッシュさせることで、クライアントの待ち時間を減らす効果や、Webサーバへの負荷を減らす効果があります。以下は、リバースプロキシでキャッシュの設定をしたうえで、異なるクライアントAとBが同じURL(www.example.com)にアクセスした際の流れです。

・クライアントAがwww.examole.comにアクセスする。
・リバースプロキシは、Webサーバにリクエストを転送する。
・リバースプロキシは、Webサーバからの応答をクライアントAに返すと同時に、自身でキャッシュする。
・クライアントBがwww.example.comにアクセスする。
・リバースプロキシはWebサーバにアクセスせず、キャッシュした内容をクライアントBに返す。

異なるクライアントによる同じアクセスの場合、Webサーバ側で変更されない限りは、Webサーバの応答内容は同じです。応答内容をキャッシュすることで、クライアント側にもWebサーバ側にもメリットがあります。ただし、Webサーバに変更を加えた場合は、リバースプロキシのキャッシュ内容を削除する必要があります。削除しないとキャッシュが消えるまでの間、クライアントには変更前のコンテンツを見せてしまいます。

6:URLの書き換え

長く煩雑なURLは、クライアントを困惑させてしまいます。しかし、Webサーバ側の事情で、URLが長くなってしまうパターンがあります。このような場合、リバースプロキシには短いURLでアクセスし、リバースプロキシ内でURLを書き換えたうえで、Webサーバにアクセスする手法を用いることで、クライアントとサーバの両方のニーズを満たせます。

7:グローバルIPアドレスの節約

複数のWebサーバを用いて異なるコンテンツを配信する場合、リバースプロキシを使わなければ、Webサーバの数だけグローバルIPを確保する必要があります。グローバルIPの確保は簡単ですが、確保した分だけ費用がかかります。「異なるアプリケーションの統合」で説明したような構成にすることは、アプリケーションを統合できるだけでなく、グローバルIPアドレスを節約することにもつながるのです。

リバースプロキシを使用するメリットとは?


リバースプロキシとは何なのかとその用途はここまでに説明してきた通りです。そして実際にリバースプロキシを運用することは、Webサイトにアクセスする際に様々な恩恵を得ることにつながります。Webサイトの利用者が重要視していることは、そのサイトがいかに快適に閲覧できるかどうかです。ここではリバースプロキシを使用するメリットとは何かを説明していきます。

表示速度が上がる

リバースプロキシを導入することは、Webサイトの表示速度を上げることにつながります。ユーザーとWebサーバ間とは通常、SSL通信が行われています。SSL通信とは通信内容を暗号化するための仕組みのことですが、リバースプロキシではこのSSL通信の代わりに暗号化及び復号を行う機能があります。よって、Webサーバの負担を軽減でき高速な表示が可能になります。

加えてリバースプロキシではデータをキャッシュとして保存しています。キャッシュとはWebサイトの情報を一時的に保存する仕組みのことです。2回目以降Webサイトに接続する際にキャッシュを読み込むことは、表示速度を高速化させることにつながります。

稼働が安定する

単一のWebサーバでは短時間に多くのアクセスが集中した場合、機能を安定的に稼働させることは難しいです。ですがリバースプロキシを使って複数のサーバを同時に運用すれば、アクセスが集中した場合でも、負荷の分散によって安定した接続を保つことができるようになります。これは複数のサーバにアクセスを振り分けているためです。稼働が安定することは、Webサイトのアクセス数向上にも役立ちます。

リバースプロキシの設定をしてみよう


ここまで、リバースプロキシを用いる利点などを説明してきました。リバースプロキシの構築方法には触れませんが、リバースプロキシを設定する方法として代表的なのは、Apacheやnginxといったツールを使うことです。どちらもサーバに使われるツールですが、リバースプロキシの役割も果たします。一度これらを利用してリバースプロキシを構築してみることで、さらに理解を深められるでしょう。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。