簡単リバースPROXY

Debian+Apache2でぱぱっとリバースPROXY

BのHTTPサーバーにあるデータをAのHTTPサーバーを経由して送りたい時に使用
普通1つのIPでサーバーを立てる場合NAT等でポートごとにサーバーを指定するが、ポート80のサーバーを複数持ちたい場合に結構困る
・1つのIPで複数のドメインを持ち、実際のデータは別サーバー(複数)等で管理したいときとかに便利
・1台のサーバー上に複数のドメインのルートを持ちたいときにも便利

概念図

   ユーザー
  ↑ data ↓
 【サーバーA】
(Apache2 proxy)
 a.example.com    ←data→  【サーバーB】192.168.0.11 (Apache2 Port 80)
 b.example.com    ←data→  【サーバーC】192.168.0.12 (Apache2 Port 80)
(192.168.0.10)          :          :

この状態でユーザーが、a.example.comにアクセスした場合は192.168.0.11のhttpサーバーにつながり、b.example.comにアクセスした場合は192.168.0.12につながる。ルーターの設定では192.168.0.10のApacheに対し80版のポートを通し、1つのIPに複数のドメインを割り当てれば完成。


Apache2のインストールとリバースPROXY構築

# apt-get install apache2

# cd /etc/apache2/
# a2enmod proxy_http

PROXY設定の作成

# emacs ./sites_available/a.example.com

 <VirtualHost *>
 ServerName      a.example.com
 ServerAdmin     user@example.com
 CustomLog       /var/log/apache2/a.example.com-access.log combined
 ErrorLog        /var/log/apache2/a.example.com-error.log
 ProxyPass               /       http://192.168.0.11/
 ProxyPassReverse        /       http://192.168.0.11/
 </VirtualHost>

# emacs ./sites_available/b.example.com

 <VirtualHost *>
 ServerName      b.example.com
 ServerAdmin     user@example.com
 CustomLog       /var/log/apache2/b.example.com-access.log combined
 ErrorLog        /var/log/apache2/b.example.com-error.log
 ProxyPass               /       http://192.168.0.12/
 ProxyPassReverse        /       http://192.168.0.12/
 </VirtualHost>

設定ファイルのシンボリックリンク作成

#ln ./sites_available/a.example.com ./sites_enable/
#ln ./sites_available/b.example.com ./sites_enable/

Proxyを有効に

 # emacs mod-enable/proxy.conf
       <Proxy *>
               AddDefaultCharset off
               Order deny,allow
               Allow from all      <<変更(とりあえずallで動作確認)
               #Allow from .example.com
       </Proxy>

再起動

# /etc/init.d/apache2 restart

これで一応問題なく動きました。
なんか間違えてたらすみません。
(間違えは指摘してもらえると助かるかも)