OSX下使用Nginx搭建WebDAV服务器
WebDAV(Web-based Distributed Authoring and Versioning)是基于 HTTP/1.1 的一个通信协议。它为 HTTP/1.1 添加了一些扩展(就是在 GET、POST、HEAD 等几个 HTTP 标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server 上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制。这个协议的出现极大地增加了 Web 作为一种创作媒体对于我们的价值。基于 WebDAV 可以实现一个功能强大的内容管理系统或者配置管理系统。
安装Nginx并配置WebDAV模块
最新的Nginx已经默认支持了webdav模块了,但是支持并不完善,对于PROPFIND OPTIONS还不支持,必须安装WebDAV的扩展模块。
git clone https://github.com/arut/nginx-dav-ext-module.git /tmp/nginx-dav-ext-module
手动编译和安装Nginx
wget http://nginx.org/download/nginx-1.8.0.tar.gz --directory-prefix=/tmp/
cd /tmp && tar -xzf nginx-1.8.0.tar.gz
cd /tmp/nginx-1.8.0
./configure --prefix=/usr/local/nginx --add-module=/tmp/nginx-dav-ext-module --with-http_ssl_module --with-pcre --with-ipv6 --sbin-path=/usr/local/nginx/bin/nginx --conf-path=/usr/local/etc/nginx/nginx.conf --pid-path=/usr/local/var/run/nginx.pid --lock-path=/usr/local/var/run/nginx.lock --http-client-body-temp-path=/usr/local/var/run/nginx/client_body_temp --http-proxy-temp-path=/usr/local/var/run/nginx/proxy_temp --http-fastcgi-temp-path=/usr/local/var/run/nginx/fastcgi_temp --http-uwsgi-temp-path=/usr/local/var/run/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/var/run/nginx/scgi_temp --http-log-path=/usr/local/var/log/nginx/access.log --error-log-path=/usr/local/var/log/nginx/error.log --with-http_gzip_static_module --with-http_dav_module --with-debug --with-http_gunzip_module
make && make install
通过Homebrew安装nginx-full
brew unlink nginx
brew tap homebrew/nginx
brew install nginx-full --with-debug --with-gunzip ---with-http2 --with-passenger --with-webdav --with-dav-ext-module
通过Homebrew安装Nginx
在安装前需要修改Homebrew配置文件/usr/local/Library/Formula/nginx.rb
,在参数中加入nginx-dav-ext-module。
args = %W[
--prefix=#{prefix}
--with-http_ssl_module
--with-pcre
--with-ipv6
--sbin-path=#{bin}/nginx
--with-cc-opt=#{cc_opt}
--with-ld-opt=#{ld_opt}
--conf-path=#{etc}/nginx/nginx.conf
--pid-path=#{var}/run/nginx.pid
--lock-path=#{var}/run/nginx.lock
--http-client-body-temp-path=#{var}/run/nginx/client_body_temp
--http-proxy-temp-path=#{var}/run/nginx/proxy_temp
--http-fastcgi-temp-path=#{var}/run/nginx/fastcgi_temp
--http-uwsgi-temp-path=#{var}/run/nginx/uwsgi_temp
--http-scgi-temp-path=#{var}/run/nginx/scgi_temp
--http-log-path=#{var}/log/nginx/access.log
--error-log-path=#{var}/log/nginx/error.log
--with-http_gzip_static_module
--add-module=/tmp/nginx-dav-ext-module
]
brew install nginx --with-debug --with-gunzip --with-libressl --with-passenger --with-spdy --with-webdav
配置和启动WebDAV服务
生成auth认证配置文件
htpasswd -c /u/etc/nginx/user.passwd admin
htpasswd /u/etc/nginx/user.passwd james
htpasswd /u/etc/nginx/user.passwd guest
在配置文件/usr/local/etc/nginx/nginx.conf
加入如下配置:
# WebDAV
server {
listen 9876;
error_page 404 /404;
error_page 503 /503;
location / {
root /u/var/webdav;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:rw all:r;
auth_basic "Authorized Users Only";
auth_basic_user_file /u/etc/nginx/user.passwd;
}
}
点此可以查看详细的配置参考。
启动Nginx
nginx
访问WebDAV服务
作为静态文件服务器
open -a "Google Chrome" http://127.0.0.1:9876/index.html
或者
cadaver http://127.0.0.1:9876
作为网盘
在Finder下,按快捷键Command+K
打开Connect to Server窗口。