INK-i ラボapacheとmongrelクラスタの設定ではまったので自分用に備忘録
現在のサーバーはapache+バランサー、rails、mongrelクラスターを使って稼働させています。
携帯サイト、特にドコモのCSSに対応させる前は特に設定に気をつけていたわけではなく、ネットで見つけた設定をそのまままねていました。
しかし、最近ドコモのCSS対応したサイトを作るようになり設定を見直す必要が出てきました。
というか、もともと非効率な設定で稼働させていたようです。
問題点
今回発覚した問題は、railsのキャッシュ機能で作成された携帯向けhtmlを再表示させるとドコモではCSSが認識されないっといった現象でした。
要するにドコモの携帯でCSSを認識させるにはContent-Typeがapplication/xhtml+xmlでなくてはならないのですが、キャッシュされているページを返す時はtext/htmlになってしまっていたわけです。
それならばと、携帯向けページがキャッシュされるディレクトリに.htaccessファイルを作り強制的に全てのhtmlをxhtmlで返すように設定したのですが、全く.htaccessの設定が有効にならない。
原因
いろいろ調べた結果、原因は全てのリクエストをapacheからスルーしてmongrelへ送っているのが問題でした。つまり既にキャッシュされた静的なhtmlを送ればよいだけにもかかわらずmongrelで処理をしていたため.htaccessの設定が有効にならなかったのです。apacheの設定がよくわかっていない事が起こしたことなんですけどね。
対応内容
静的なファイルのリクエストはapacheで処理させ動的なリクエストだけmongrelへ引き継ぐようにする。
(とっても当たり前のことすぎて恥ずかしいですが、二度と同じ間違いを犯さないように)
変更前
<VirtualHost 192.168.1.15>
ServerName www.tabihelp.net
ProxyPass / balancer://tabihelp/
ProxyPassReverse / balancer://tabihelp/
<Proxy balancer://tabihelp/>
BalancerMember http://127.0.0.1:8020 loadfactor=10
BalancerMember http://127.0.0.1:8021 loadfactor=10
BalancerMember http://127.0.0.1:8022 loadfactor=10
BalancerMember http://127.0.0.1:8023 loadfactor=10
BalancerMember http://127.0.0.1:8024 loadfactor=10
</Proxy>
</VirtualHost>
変更後
<Proxy balancer://amazontrend/>
BalancerMember http://127.0.0.1:8000 loadfactor=10
BalancerMember http://127.0.0.1:8001 loadfactor=10
BalancerMember http://127.0.0.1:8002 loadfactor=10
BalancerMember http://127.0.0.1:8003 loadfactor=10
BalancerMember http://127.0.0.1:8004 loadfactor=10
</Proxy>
<VirtualHost 192.168.1.15>
ServerName www.itemtrend.net
DocumentRoot /home/railsapps/item_trend/public
RewriteEngine on
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://amazontrend%{REQUEST_URI} [P,QSA,L]
<Directory />
AllowOverride All
</Directory>
</VirtualHost>
最近のコメント
2週 3日前
2週 3日前
2週 4日前
3週 2日前
3週 6日前
4週 5時間前
4週 7時間前
9週 2日前
10週 21時間前
10週 1日前