m柴田です。
スレッドを閉めるとほざきながら、その舌の根も乾かぬうちに申しわけありません。
原因判明しました。
自作自演でした。
Redmine サーバー側設定でした。
原因2つ絡んでます。
autologin の Cookie が作れなくなるだけで読むことはできますので、いったんログアウトするまで自動ログインできており、原因は問題
発覚の少し前の時点に入れ込んでおりました。
Apache のバックで動いている mongrel → thin への移行の際の処置が原因の1つでした。
さらに言うと、Redmine のサーバーを立てた一番最初の時点でその遠因を仕込んでいたようです。
(遠因)
1. Rack が2バージョン同居していた。
Ver.1.0.1 (Redmine が使用) と Ver. 1.2.1 (素直にインストールしたときに入っていた) が入っておりました。
(原因1)
2. Thin が Rack 1.2.1 を要求するという情報があり、action_controller.rb のバージョンチェックにパッチを
充てて対処していた。
{redmine インストールフォルダ}\vendor\rails\actionpack\lib\action_controller.rb
の Rack バージョンチェック行を Ver. 1.2.1 が通るよう書き換える処置がどこかのサイトに紹介してあり、それでしばらく無事に動いて
おりました。
mongrel に戻して動かしても、そこの変更はそのまま忘れてやっていましたので、現象変わらずで、mongrel → thin の変更はシロと
誤判定しておりました。
(原因2)
3. 最近 Apache の Load Balancer まわりの設定を正しくしたのだが、まだ必要な設定が漏れていた。
よくインターネット上の記事で紹介されているパターンは以下ですが、Apache 2.2.12 以降でないと ProxyPassReverse
に balancer://... を指定できないことが最近わかりました。
ProxyPass /redmine balancer://redminecluster
ProxyPassReverse /redmine balancer://redminecluster
<Proxy balancer://redminecluster>
BalancerMember
http://localhost:4001/redmine
BalancerMember
http://localhost:4002/redmine
</Proxy>
うちの Apache は 2.2.8 で ProxyPassReverse は個別に指定する必要があり対処しました。
(IP アドレス制限をかける必要があり、Location ディレクティブで分けてあります。)
これについてはやっていたのですが、最終的には、ProxyPassReverseCookiePath の設定が抜けており FireFox で自動
ログインできている Cookie 内を見ると、ホストのルートに対し発行されており悪さをしていました。
<Location /redmine>
ProxyPass balancer://redminecluster
ProxyPassReverse
http://localhost:4001/redmine
ProxyPassReverse
http://localhost:4002/redmine
ProxyPassReverseCookiePath / /redmine
Order allow,deny
Allow from
192.168.0.0/19
</Location>
<Proxy balancer://redminecluster>
BalancerMember
http://localhost:4001/redmine
BalancerMember
http://localhost:4002/redmine
</Proxy>
FireFox はこれでも涼しい顔して自動ログインできていましたが、IE はダメでした。
元の設定 (ProxyPassReverse に balancer://...) は、正しく動いていなかったはずですが、それも問題に気づかず運
用できてました。
--- 現時点での対処の方針 ---
Apache の Load Balancer まわりの設定は、単に間違いでしたので修正します。
Thin が Rack 1.2.1 を要求する件ですが、当時エラーメッセージを見ると確かにそのように思える内容だったと思います。
しかし別の記事を探すと (英語だったので当時、目に引っかかって来なかった) Rack が2バージョンある環境下でトラブルが発生するので、
Ver.1.0.1 だけ残して、後はアンインストールすると動くという情報がありました。
localhost でやってみた範囲では、それで行けたようです。
そもそも Rack 1.0.1 は Redmine 指定のバージョンですし、それで Thin が行けるのであれば、そもそもそうなるべき構成です
ので、それで行こうと思います。
色々お騒がせしました。
これにて本当のクローズとさせていただきます。
> > weblog:http://www.kadoppe.net-引用テキストを表示しない -