簡単リバース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
これで一応問題なく動きました。
なんか間違えてたらすみません。
(間違えは指摘してもらえると助かるかも)