作为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。