Reading / Coding / Hacking
Nginx 的内置模块 ngx_http_dav_module
实现了 WebDAV 的 PUT
/ DELETE
/ MKCOL
/ COPY
/ MOVE
指令(其实有 PUT
就完全足够),稍微配置一下,就可以充当单机版的 Amazon S3.
应用写入数据只需依赖一个 WebDAV 客户端,比如 Python 的 EasyWebDAV 库或者集成了 Django Storage API 的 django-webdav-storage。至于读取,由于存储后端仍然是 POSIX 文件系统,不需要任何特殊处理,可以直接让 Nginx 响应请求,就跟普通的静态文件一样。
配置示例 (via django-webdav-storage):
server {
listen 80;
server_name webdav.example.com;
root /data/media;
client_max_body_size 10m;
client_body_temp_path /tmp;
create_full_put_path on;
autoindex off;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_access user:rw group:r all:r;
}
优势:
局限:
跨服务器的几种方案:
proxy_pass
过来)。有挺多花样可以玩,但是可靠性完全没法保证。这么山寨的实现,丢数据也不稀奇呢……