質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Q&A

解決済

1回答

7503閲覧

nginxのWebDAVで書き込みとかがうまく動作しない。

raccy

総合スコア21733

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

2グッド

1クリップ

投稿2016/02/21 06:09

###前提・実現したいこと
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;

設定については下記サイトを参考にしました。
http://server-setting.info/centos/nginx-webdav-howto.html

###補足情報(言語/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)も入っていることを確認しています。

takotakot, argius👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

CarotDAVでアクセス時に、nginxのログ等を見るとPROPFINDが存在しないファイルに対しても"-1"のサイズで存在すると返しているようです。

nginx のバージョンはいくつでしょうか。
nginx-1.8.1(+dav_ext_module)/CentOS 7 環境では「HTTP/1.1 207 Multi-Status」で応答し、「<D:status>HTTP/1.1 404 Not Found</D:status>」を含んだ XML を返していて、サイズ -1 ではありませんでした。

また、CarotDAVが書き込み完了後にPROPPATCHを発行しているのですが、nginx側は対応していないとなり、エラーとなっています。

OPTIONS の応答「Allow: GET,HEAD,PUT,DELETE,MKCOL,COPY,MOVE,PROPFIND,OPTIONS」で PROPPATCH を含んでいないにもかかわらず、PROPPATCH を発行するのであればクライアント側が悪いのではないかと思います。

投稿2016/02/24 06:18

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

raccy

2016/02/24 12:36

バージョンは 1.6.2-5+deb8u1 です。パッケージなので、コンパイルとかで入れたりとかはしてないです。 nginxでのアクセスログを見ていると、そもそもOPTIONSを叩いているようには見えませんでした。WindowsのWebDAVは動きがあやしいので有名ですし、CarotDAVはそれなりに有名らしいですけど、ちょっとあやしいのかも知れません。ちなみに、Sony DPT-S1を試したら同期失敗で終わりました。 nginxとかを最新にしたらなんとかなりそうな気もしますが、なるべくパッケージのみで作れるシステムにしたいため、それは避けたいです。他にrack_davを試したところ、なんとかなりそうな所に来ていますので、nginxは使わない方向で行きたいと思います。 なんやかんやでnginxのWebDAVは使わないになりそうですけど、回答、ありがとうございました。とても参考になりました。
TaichiYanagiya

2016/02/25 01:44

Apache httpd と比較しました。 ・httpd : ファイルが存在する→200, ファイルが存在しない→404 ・Nginx : ファイルが存在してもしなくても 207 を返す Windows 8.1 の WebDav クライアントは 200, 404 じゃないとうまくいかないようです。 PROPFIND の処理は nginx 本体ではなく nginx-dav-ext-module 側なので、こちらを修正しないとダメそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問