質問: ### 前提・実現したいこと nginxのWebDAVを用いて、WebDAV公開をしたいと考えています。 最終的なターゲットはSony DPT-S1ですが、その前にWindowsで接続確認をしているところです。 Windowsでは下記のエラーが発生してうまく動作しない状況です。nginxのWebDAVはあまりいい実装では無いのでしょうか?そうであれば、Apacheやrack_davなど別の方法を考えたいと思いますので、nginxのWebDAVについても何か情報をお持ちであれば教えて下さい。 ### 発生している問題・エラーメッセージ Windows 8.1のOS標準のWebDav機能でアクセスしたところ、フォルダ一覧とファイルの読み込みが出来ましたが、ファイルをドラッグ&ドロップするとエラーが表示され書き込みできません。 Windows標準が怪しいと思いCarotDAVを使ったところ、必ずファイルを上書きするかを聞いてきて(サーバにファイルが無くても)、上書きすると書き込み自体は出来ますが、エラーが表示されます。 CarotDAVでアクセス時に、nginxのログ等を見るとPROPFINDが存在しないファイルに対しても"-1"のサイズで存在すると返しているようです。また、CarotDAVが書き込み完了後にPROPPATCHを発行しているのですが、nginx側は対応していないとなり、エラーとなっています。 このPROPFINDの動作は正しいのでしょうか?また、nginxの拡張DAVではPROPATCHに対応していないようですが、なくても動くものなのでしょうか? ### ソースコード nginxの設定ファイルでは下記のように書いています(抜粋)。 ``` dav_methods PUT DELETE MKCOL COPY MOVE; dav_ext_methods PROPFIND OPTIONS; dav_access user:rw group:rw all:r; create_full_put_path on; client_body_temp_path /tmp; ``` 設定については下記サイトを参考にしました。 ### 補足情報(言語/FW/ツール等のバージョンなど) ハード: Raspberry Pi 2 OS: Raspbian (NOOBS 1.7.0で入れた後にapt-getで更新済み) パッケージ: nginxはnginx-fullパッケージをapt-getでインストール nginx-fullパッケージには基本DAV機能(dav-module)も拡張DAV機能(dav-ext-module)も入っていることを確認しています。
回答: > > CarotDAVでアクセス時に、nginxのログ等を見るとPROPFINDが存在しないファイルに対しても"-1"のサイズで存在すると返しているようです。 > > > nginx のバージョンはいくつでしょうか。 nginx-1.8.1(+dav_ext_module)/CentOS 7 環境では「HTTP/1.1 207 Multi-Status」で応答し、「HTTP/1.1 404 Not Found」を含んだ XML を返していて、サイズ -1 ではありませんでした。 > > また、CarotDAVが書き込み完了後にPROPPATCHを発行しているのですが、nginx側は対応していないとなり、エラーとなっています。 > > > OPTIONS の応答「Allow: GET,HEAD,PUT,DELETE,MKCOL,COPY,MOVE,PROPFIND,OPTIONS」で PROPPATCH を含んでいないにもかかわらず、PROPPATCH を発行するのであればクライアント側が悪いのではないかと思います。