Mac で WebDAV + mod_proxy = Chunked 問題

今時というか、かなり前から、Mac や、Windows には、WebDAVクライアント機能がついていて、何も考えずに WebDAV を利用できる。
だいぶ、利用実績もあるはずだと思うんだけど、未だに、サーバー設定に関しては、「やってみた」的な情報しか、Google 先生は、教えてくれない。まあ、探し方が悪いのかもしれないが。
MacWebDAV の環境を構築していて、つまずいてしまったので、その記録。

単純に、固定グローバル IP を持ったサーバーで、Apache による WebDAV を構築する分には、ServerName さえ正確に設定していれば、さらっと使えるようになる。
この辺は、かなり前から実装されていることもあり、あっけなく使えるようになる。

ネットワーク環境の都合により、mod_proxy 経由で公開する必要がある場合がある。
実際、グローバル固定 IP が足りなかったので、mod_proxy を設定して、WebDAVにつないでみた。
見た感じ、ファイルは、見えるし、コピー(ダウンロード)もできる。
ところが、アップロードしてみたところが、ちゃんと、コピーダイアログが表示されて、プログレスバーは、進行して、正常に完了するのに、ファイルを見ると、サイズが0だったりする。
ちゃんと、ServerName が渡っていないのかと思い、サーバーのホスト名や、Apache 上のServerName の設定をあーでもない、こーでもないと、変えてみたりしてみたけど、一向に、コピーできる気配がない。
しかも、Windows からは、ちゃんとコピーできるようだ。

さんざん、悩んで、時間を費やしたあげく、どうやら、Mac と、Apache のHTTPに関する仕様の解釈の違いで問題が起きていたようだ。

ここによると、ファイル転送の際のヘッダ情報 Chunked が、大文字か、小文字かの違いでこういうことになっているらしい。
そこで、以下のように RequestHeader を書き換える設定を加えてやる。


ProxyPass / http://localhost:8080/

ProxyPassReverse / http://localhost:8080/

RequestHeader edit Transfer-Encoding Chunked chunked early

なんと、あっけなく、コピーができるようになった。
ショボーンな感じ。