作为WebDAV服务器,Apache和nginx

我在Ubuntu 18.04上进行了尝试,但我认为其他地方也差不多。

Apache

阿帕奇

引入

sudo apt install apache2

对于像RPM这样的人,也请照此感觉做。

准备

我们将设置锁文件存放位置为/var/www/temp,并将/var/www/html/dav公开为/dav。

sudo mkdir -p /var/www/temp /var/www/html/dav
sudo chown www-data:www-data /var/www/temp /var/www/html/dav

设定

cd /etc/apache2/mods-enabled/
sudo ln -s ../mods-available/dav.load dav.load
sudo ln -s ../mods-available/dav_fs.load dav_fs.load 
sudo ln -s ../mods-available/dav_fs.conf dav_fs.conf

如果使用dav_fs,则不需要mods-available中的dav_lock。
将sites-available/000-default.conf的开头部分更改如下。

DavLockDB /var/www/temp/DavLockDB
<VirtualHost *:80>
        <Directory /var/www/html/dav>
                DAV On
        </Directory>

在安全方面,请视情况而定,好好照顾。
然后重新启动。

sudo service apache2 restart

不过!出现了一个错误!在index.html所在的目录中,PROPFIND请求失败了。

修改

由于被认为mod_dir有错误,因此将其移除。

cd /etc/apache2/mods-enabled/
sudo rm dir.load
sudo rm dir.conf
sudo service apache2 restart

nginx 内嵌一个高性能的 HTTP 和反向代理服务器以及一个通用的 TCP/UDP 代理服务器。

引入

sudo apt install nginx nginx-extras

在某处我读到有人写道,在nginx上进行WebDAV会很麻烦,但实际上并不是这样的。只需要安装nginx-extras即可。

备办

sudo mkdir -p /var/www/temp /var/www/html/dav
sudo chown www-data:www-data /var/www/temp /var/www/html/dav

设定

在 sites-available/default 文件中添加以下内容。

  location /dav/ {
    client_body_temp_path /var/www/temp;
    dav_methods PUT DELETE MKCOL COPY MOVE;
    dav_ext_methods PROPFIND OPTIONS;
    create_full_put_path on;
    dav_access user:rw group:rw all:rw;
    autoindex on;
    allow all;
  }

就像往常一样,安全方面请多关照。
然后重新启动。

sudo service nginx restart

我来试试看。

我会使用curl。

sudo apt install curl

创建目录

curl --request MKCOL http://localhost/dav/tmp/

如果nginx的末尾没有斜杠,它会报409冲突错误。什么是冲突呢?

放置文件

curl --request PUT --data "hello" http://localhost/dav/hello.txt

获取列表

如果没有指定属性

curl --request PROPFIND --header 'Depth:1' http://localhost/dav/

默认情况下包含以下属性。

Apachenginxcreationdate有有displayname無有getcontentlanguage無空getcontentlength(ディレクトリ)無有getcontentlength(ファイル)有有getcontenttype有空getetag有空getlastmodified有有href有有lockdiscovery空空resourcetype(ディレクトリ)有有resourcetype(ファイル)空空source無空status有有supportedlock有空executable(ディレクトリ)無無executable(ファイル)有無

如果指定属性的情况下

例如

curl --request PROPFIND --header 'Depth:1' --data '<D:propfind xmlns:D="DAV:"><D:prop><D:resourcetype/></D:prop></D:propfind>' http://localhost/dav/

如果明确要求Apache使用getcontentlength,目录的状态将变为404。

广告
将在 10 秒后关闭
bannerAds