竹の子エンジニア

30代から目指すエンジニアの日記

リバースプロキシ

どうもこんばんわ。
今回httpサーバ上にリバースプロキシを構築してくれという話がきたので
それに関する覚え書きです。

リバースプロキシとは

リバースプロキシの話題に入る前に、まず前提として...

そもそもプロキシって何なのさ

前提としてプロキシサーバというものがあり、
プロキシサーバ自体はインターネットへのアクセスを中継する役割を担ってくれる。

プロキシのメリットは?

プロキシサーバのメリットとしては以下があるかと思います。

キャッシュ

クライアントがインターネットにアクセスする際は
プロキシを中継してインターネットにアクセスする。
その際に、プロキシは代理でインターネットの接続先に
アクセスするわけですがその接続した時の情報はプロキシサーバ側で
キャッシュ(一時保存)してくれる。

再度別のクライアントがプロキシ経由でホームページにアクセスしたときは
プロキシに保存されているキャッシュを利用して高速アクセスが可能になる。

ユーザー認証

プロキシサーバにはユーザーを認証する機能がある。
この機能を使えば認証されたユーザー/クライアントだけがインターネットへの
アクセスを実現できる。

匿名性の確保

インターネットにアクセスする場合は、プロキシサーバが代理で接続する為、
どのクライアントからのアクセスなのかを隠すことができる。

リバースプロキシとは

ひとまずプロキシについてはざっくり説明したので、
それではリバースなプロキシって何なのさ?

プロキシサーバはクライアントの代理としてサーバにアクセスしてくれるということが
わかったかと思いますが、その逆(リバース)の動作を行うプロキシサーバのこと。

つまり、サーバの代理として動くプロキシサーバのこと。

と書いていても若干わからなくなってきたので、
茶番で書くと以下のような感じ。

クライアント:「あそこのページが見たいのよリバースさん!」
リバース:「了解したわ!あそこのページのコンテンツが欲しいならあそこのサーバに聞いてみるわ」
リバース:「クライアントがあんたんとこのコンテンツが欲しいらしいから頂戴。俺が中継するから。」
サーバ:「ほしたらこれあげるわー」
リバース:「あざーす!」
リバース:「クライアントさんや、サーバからページもらったからこれ見せてあげるわー」
クライアント:「ありがとー!見れたわー!」

大体こんな感じですかね。

リバースプロキシのメリット

リバースプロキシをする上でのメリットとなるのが、
身元を隠せる、負荷分散ができる点になるようです。

身元を隠せる点は通常のプロキシと同様ですが
負荷分散については、リバースプロキシを利用することで
リバースプロキシがページをもらいにいくサーバを、複数指定することができ
それによって負荷分散につながるといったもの。

Linuxでのリバースプロキシの設定

さて、ひとまずリバースプロキシが何たるかはわかったかと思いますが、
Linuxhttpdを利用してリバースプロキシを構成する方法を書いておきます。

ProxyPass /app http://example.com/
ProxyPassReverse /app http://example.com/
ProxyPassとは

ProxyPassについてですが、httpdでサーバ自身のURLがhttp://test.comだった場合
http://test.com/appにアクセスがあった場合に、http://example.comに転送します。
その為、ここにはサブディレクトリと転送先を書く時に必要になります。

ProxyPassReserve

転送先のサーバでリダイレクトが発生した時にHTTPヘッダを書き換える時に
必要になる。

と書きましたが、いまいちProxyPassReserveがわからないですね。。

ちょっと時間がなくなったので途中ですが、
後日修正します。