WebDAV是一个十分方便的文件传输方式。因为基于HTTP协议,大部分应用都支持WebDAV。
对于OwnCloud,它还支持使用WebDAV作为一种附加存储。于是决定使用模块较多的Apache2搭建WebDAV。
下面就简单介绍一下方法
一、基于Apache2的WebDAV实现
首先转到Apache2的配置文件夹,新建一个虚拟主机:
cd /etc/apache2/sites-available
sudo nano 001-webdav.conf
在站点配置文件中写入:
<Directory /xxx/xxx/webdav/>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
require all granted
</Directory>
<VirtualHost *:89>
ServerAdmin webmaster@mewwoof.cn
ServerName webdav.xxx.com
DocumentRoot /xxx/xxx/webdav/
<Location />
Dav On
AuthType Basic
AuthName "Webdav"
AuthUserFile /xxx/xxx/webdav.passwd
Require valid-user
</Location>
</VirtualHost>
这样就成功搭建了一个WebDAV服务
下面就让我们来详细解析一下这个配置
1、设置站点目录权限
<Directory /xxx/xxx/webdav/>
//其他配置
</Directory>
这里对硬盘上的这个网页文件夹进行了权限的配置,允许用户访问这个文件夹
2、设置虚拟主机
<VirtualHost *:89>
这表示新建了一个虚拟主机。
注意这里有个坑:这里指定的主机名和端口号指的是监听主机名/地址和端口号。
比如如果你的服务器有多个网卡,一个地址172.16.1.1,另一个172.16.1.2,如果填172.16.1.1:89,那么这个站点就只接收来自172.16.1.1的89端口的请求。搭建的时候还以为这里填的是虚拟主机名称,当时折腾了好久才弄明白问题所在。
下面的配置就不一一解释了,稍微有点英语基础的应该都看得懂= =吧。
二、基本身份认证——添加用户
上面的配置文件中,有一行是这样的:
AuthUserFile /xxx/xxx/webdav.passwd
这里的webdav.passwd是一个密码文件,里面记录着用户名和密码。现在我们要做的就是创建这个文件,并且使用htpasswd命令将用户名和加密后的密码写进去。
sudo htpasswd -bc /xxx/xxx/webdav.passwd username password
这里选项中“c”表示创建新文件,如果已经创建了密码文件,则“-b”即可。
那么现在试着在浏览器中输入http://webdav.xxx.com:89,应该就会弹出登录提示框了,这时只要填上刚刚添加的用户名和密码即可访问了。
三、Nginx反向代理配置
我们已经配置好了WebDAV服务器,现在服务器配置如下:
- 虚拟主机名称:webdav.xxx.com
- 协议:HTTP
- 端口:89
那么现在我们要求通过以下方式访问我们的WebDAV服务器:
- 虚拟主机名称:webdav123.xxx.com
- 协议:HTTPS
- 端口:443
那么我们应该如何配置呢?
话不多说,先上配置:
server {
listen 443 ssl;
server_name webdav123.xxx.com;
ssl_certificate /xxx/xxx/xx.pem;
ssl_certificate_key /xxx/xxx/xx.pem;
location / {
proxy_pass http://127.0.0.1:89;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host webdav.xxx.com;
proxy_set_header X-Real-IP $remote_addr;
}
}
上面的部分和常规的Nginx配置差不多,无非就是设置端口、虚拟主机名称和SSL证书。需要提一下的是下面的反代配置。
proxy_pass:设置上游服务器的地址;
proxy_set_header:设置HTTP请求头。这个比较重要:因为我们的WebDAV设置了虚拟主机名称,也就是说,HTTP请求头必须包含这个主机名称才可以访问到对应的站点。在这里我们需要设置向上游服务器发送的请求头中,虚拟主机名称为webdav.xxx.com。(请先学习HTTP请求头有关知识)(更多关于Nginx反代的配置,到时我再开一篇文章专门写写吧)
那么现在,我们打开浏览器,或者文件资源管理器,输入https://webdav123.xxx.com,即可访问WebDAV文件夹啦。
(完结撒花~)