2008年7月15日火曜日

WordPressでリバースプロキシすると無限ループする

外部公開しているapacheからLAN内の別サーバのWordPress 2.5.1にリバースプロキシしたところFirefox 3で「自動転送がループしています」というエラーが出て表示されない。どうやらリダイレクトが無限ループしてるっぽい。

調査したところWordPress 2.3からカノニカルURL(標準URL)なる機能が搭載され、設定されたURLと異なる場合に正しいURLにリダイレクトするような機能がついているらしい。どうもこいつが悪さしているようだ。

おそらく下記のようになっているのではないか?
  • クライアントからグローバル名でapacheに接続
  • apacheのリバースプロキシでLAN内の別サーバに内部IPでリバースプロキシ
  • WordPressは内部IPを設定したURLと異なると判断しグローバル名にてリダイレクトする
  • apacheのリバースプロキシでLAN内の別サーバに内部IPでリバースプロキシ
  • ・・・繰り返しで無限ループ。。
下記あたりが怪しいと思ったが英語なのでイマイチ分からず。。
http://trac.wordpress.org/ticket/5089

これにあまり時間も掛けられないので、ひとまず下記の「Disable Canonical URL Redirection」というプラグインにてカノニカルURL機能を無効にするという対処を行った。
http://txfx.net/files/wordpress/disable-canonical-redirects.phps

できればカノニカルURL機能は使えた方が良いんだけどねぇ。良い方法を知っている方がいたら教えてください。

0 件のコメント: