mod_proxy_balancer と RequestHeader

折角 mongrel_cluster でRailsアプリケーションを並列稼動させるように出来た(mongrel_cluster とそのサービスの自動起動 - Rubyとか Illustratorとか SFとか折紙とか)ので、バランサーさせてやりたい。あと、https接続してるとリダイレクト(redirect_to)の時にSSLが外れてしまいがちなのでその辺も何とかする。

とはいっても要は設定ファイルだ。
[2245] cat /etc/apache2/sites-available/proxy

ProxyPass /photo balancer://photo
ProxyPassReverse /photo balancer://photo


  RequestHeader set X_FORWARDED_PROTO 'https'
  BalancerMember http://192.168.<アドレス>:3101/photo
  BalancerMember http://192.168.<アドレス>:3102/photo
  BalancerMember http://192.168.<アドレス>:3103/photo



  SetHandler balancer-manager

  Order Deny,Allow
  Deny from all
  Allow from 192.168.<アドレス(範囲)>

Proxy用の設定ファイルをどこに置くかは前に少し議論した(Apache2 での Proxy設定 - Rubyとか Illustratorとか SFとか折紙とか)。
あとは、RequestHeader の項目が上記リダイレクト対策(headersモジュール必要)。Location /balancer-manager の項目がバランサーの状態表示(statusモジュール必要)、Deny、Allow のアドレス範囲の書き方注意(Allow)。バランサー自体には proxy_balancerモジュールが必要でそれに伴って proxy系の幾つかのモジュールも必要になる、a2enmod宜しく。
でもって、sites-available/proxy有効化には a2ensiteなんだけども既にやってるか。
何れにせよ適宜 apache2再起動(或はリロード)

本当は全体(除バランサーマネージャ)を VirtualHost とか Location とか Directory で囲ってやらないといけないのだけど、その辺はまあ。(というかこのまんまだと、リダイレクトのタイミングで全部(元が http だったとしても) https になります、いいのかな)