Reverse Proxyの後ろにCatalystアプリを置いてみた
前回PODだけ貼り付け、検証すると言ったので検証した。
http://d.hatena.ne.jp/kopug/20061201
構成
( Rooter ) | [Apache2.0 mod_proxy] | [Apache2.0 mod_perl Catalyst ]
Frontendのhttpd.conf
<VirtualHost *:80> ServerAdmin webmaster@example.com DocumentRoot /var/www/foo/html ServerName www.example.com ErrorLog logs/error_log CustomLog logs/access_log common RewriteEngine On RewriteRule ^/css|img|js/ - [L] RewriteRule ^/(.*)$ http://backend.example.lan/$1 [P,L] </VirtualHost>
Catalyst Application の conf
--- name: MyApp using_frontend_proxy: 1
テストコード
Root.pm
sub proxytest : Local { my ($self, $c ) @_; $c->log->debug("Remote Address : " . $c->req->address ); $c->log->debug("Base Host : " . $c->base ); # * 要 C::P::Dumper $c->log->dumper( \%ENV ); }
こんな感じで適当に動かしてみる。
これで気がついたのは、Catalystを付属のserver.pl で動かした場合、
using_frontend_proxy: 1 とか無くても 環境変数に HTTP_X_FORWARDED がある場合、
それが使われていたけれども、mod_perlで動かした場合は、
デフォルトだと HTTP_HOST と REMOTE_ADDR を見てる感じ。