Tomcat + Apacheで、マルチバイトを含んだURLがうまく処理できない
とある所ではまって、なおかつ情報があまりなかったので載せておきます。
現象
Tomcatの上に載せたHudsonに、Apacheからmod_proxy_ajp経由でアクセスしようとすると、マルチバイトを含んだURLがうまく処理できない。例えば、新規ジョブ作成( http://localhost/hudson/view/すべて/newJob )をクリックしたときに、マルチバイトのデコードに失敗して404 Not Foundが発生する。
Tomcat - 日本語 - Hudson Wikiの通りに、コネクタに「URIEncoding="UTF-8"」を設定しても発生します。8080・8009番ポート両方に設定しても変わらず。
発生環境
断定はできないけど、多分Windows環境だと起きるみたい。Windowsだと2箇所で発生して、Ubuntuだと起きませんでした。
一応、再現した環境の情報はこんな感じ。
細かい情報は覚えていないけど、別のWindows Vista環境でも発生しました。
解決策
<Location /hudson/> ProxyPass ajp://localhost:8009/hudson/ nocanon </Location>
のように、"nocanon"を追記してやります。こうすると、マルチバイトを含んだURLもうまく処理してくれました*1。
*1:サーバ分野には悲しいぐらいに疎いので、詳しいことはあまり聞かないでやってください、サーセンorz