続・Apache2.2(mod_proxy_balancer) + Mongrel 環境の設定例
http://d.hatena.ne.jp/mhag/20071022/1193035548
http://d.hatena.ne.jp/mhag/20071022/1193040256
昨日書いた上記エントリでは、特定のサブディレクトリに格納されている
静的コンテンツ(画像やCSS, JS ファイル)はApache で処理できるが、
RAILS_ROOT/public 直下にあるhtml などはMongrel に渡されてしまう。
ということで、あとで書く。
(2007/10/29 追記)
Apache2.2 + Mongrel 環境向けドキュメントが公式に用意されていた。
Rails であらかじめ用意されているRAILS_ROOT/public/.htaccess を
Apache + Mongrel 仕様に書き直した感じ + α(deflate とか)。
これで事足りる人はこっちの設定を使ったほうがよいと思う。
この設定を使った場合
- RAILS_ROOT/public 直下のファイルはApache で処理される
- http://example.com/foo のようなサブディレクトリはMongrel に渡される
# サブディレクトリとコントローラの判別ができないため
サブディレクトリをApache 側で処理したい場合、以下の設定を用いるとよい。
DocumentRoot /path/to/rails_app/public <Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off RewriteEngine On # balancer-manager を使用しない場合は不要 RewriteRule ^/balancer-manager$ - [L] # index.html の代わりにRails アプリ起動 RewriteRule ^/$ balancer://cluster/ [P,QSA,L] RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d RewriteRule ^/(.*)$ balancer://cluster/$1 [P,QSA,L] ProxyPassReverse / balancer://cluster/ <Proxy balancer://cluster/> BalancerMember http://127.0.0.1:3000 loadfactor=20 BalancerMember http://127.0.0.1:3001 loadfactor=20 BalancerMember http://127.0.0.1:3002 loadfactor=20 </Proxy>
この設定を行うことで、静的コンテンツと動的コンテンツの切り分けを
完全に行うことができる(はず)。