- http://silmor.de/49
- http://blog.yoheis.net/2007/08/webdav.html
- http://blog.dealforest.net/2009/07/subversion_behind_an_apache_reverse_proxy/
- http://httpd.apache.org/docs/2.2/ja/mod/mod_headers.html#requestheader
- http://httpd.apache.org/docs/2.2/en/mod/mod_headers.html#requestheader
subversionのhttpsなリポジトリでmove出来ないよ、と言われた。で、原因はSSLアクセラレータ配下にいてたhttpで応答してるwebdavだったらしい。
clientがLB/リバースプロキシサーバにhttpsでwebdavで接続すると、リクエストヘッダのDestinationヘッダに https://example.com/hogehoge/という絶対URLを送信する。しかし、LB/リバースプロキシサーバはhttpsを復号して、バックエンドのwebdavサーバにリクエストを投げる。ここでバックエンドのhttpなwebdavサーバはhttpsが解釈できない?から502 Bad Gatewayを返している模様。
というわけでmod_headersのearlyモードを使って、リクエストヘッダ中のDestinationの値を書き換える。(httpsの文字列をhttpに)
RequestHeader edit Destination ^https http early
mod_headersのearlyモード
early ディレクティブではリクエストパスの設定が解決される前に 処理されるので、メインサーバかバーチャルホストコンテキストでのみ、 早期ヘッダをセットできます。early ディレクティブはリクエストパスに 依存することはできませんので、
や といったコンテキスト内では使用 できません。
関係ないけど、apacheの日本語版のmod_headersマニュアルにはeditの項目が反映されてないのなー。