Apacheでリバースプロキシ

先頃Squidでのリバースプロキシについて書きましたが、
実はウェブサーバのApache単体でもリバースプロキシ出来てしまいます。

リバースプロキシのApacheの設定ファイル”/etc/apache2/httpsd.conf”に以下を加えます。

LoadModule proxy_module libexec/mod_proxy.so
LoadModule proxy_http_module libexec/mod_proxy_http.so
ProxyPass /<ディレクトリ名> http://<ウェブサーバ名>
ProxyPassReverse /<ディレクトリ名> http://<ウェブサーバ名>
HWSProxyPassReverseCookie /<ディレクトリ名>

で、ウェブサーバを再起動します。
すると、任意のウェブブラウザから

http://<リバースプロキシサーバ名>/<ディレクトリ名>

へアクセスしようとしたときプロキシサーバとして働き、実際には

http://<ウェブサーバ名>

へのアクセスへ置き換えられます。
ディレクトリとサーバの対応関係を追加することで振り分けが可能です。
なお応答は逆の経路をたどりきちんとウェブサーバまで届きますが、
ウェブブラウザではプロキシの存在は認識できません。

さて、このリバースプロキシ、見方を変えると内部ネットワークへの侵入なので、
意図しないアクセスが起きないよう十分セキュリティに気を使う必要があります。
またaタグのhref属性などの他ファイルへの参照はリバースプロキシが都合よく書き換えてくれる、
なんてことはないので、
リバースプロキシ経由でアクセスされることを前提にコンテンツを作成する必要があります。
そのあたりきちんと認識してお使いください。
ダイレクトアクセスとリバースプロキシ経由が共に出来るようにするのなら、
別々のコンテンツにするなり、判別して切り替えるなり面倒な作業が発生します。