1. 程式人生 > >nginx實戰(二) WebDAV 模組 http_dav_module

nginx實戰(二) WebDAV 模組 http_dav_module

前言

WebDAV (Web-based Distributed Authoring and Versioning) 一種基於 HTTP 1.1協議的通訊協議。它擴充套件了HTTP 1.1,在GET、POST、HEAD等幾個HTTP標準方法以外添加了一些新的方法,使應用程式可直接對Web Server直接讀寫,並支援寫檔案鎖定(Locking)及解鎖(Unlock),還可以支援檔案的版本控制。nginx 編譯時通過加入“–with-http_dav_module”可以啟用對WebDav協議的支援。

WebDAV 工作組的目標是,設計一個協議,它提供基於全球資訊網的分散式創作和版本控制。 當前的 WebDAV 規範 (IETF RFC 2518) 解決協作式創作工具的三個主要問題:

**改防寫** HTTP 1.1 無法確保客戶端可以保護資源,並且可以在其他客戶端同時編輯它們的情況下進行更改。 使用 WebDAV,可以通過多種方式來鎖定資源,以便讓其他客戶端知道您對所討論的資源感興趣,或者防止其他客戶端訪問該資源。
**資源管理** HTTP 只能直接訪問單個資源。 WebDAV 提供一種更有效地組織資料的方法。 WebDAV 引入了可包含資源的集合(類似於檔案系統資料夾)概念。 通過 WebDAV 進行的資源管理包括如下功能:建立、移動、複製和刪除集合,以及集合中的資源或檔案。
**文件屬性** 不同型別的資料具有唯一的屬性,這有助於描述資料。 例如,在電子郵件中,這些屬性可能是發件人的姓名和接收郵件的時間。 在協作文件中,這些屬性可能是文件原始作者的姓名和最後一個編輯者的姓名。 因為人們使用的文件型別各不相同,所以可能的屬性型別列表也變得無限大。 XML 是 WebDAV 所需的一種可擴充套件通訊工具。
    (摘自百度百科 https://baike.baidu.com/item/WebDAV)

編譯

nginx 環境搭建見前文 http://blog.51cto.com/13673090/2300319, 此處只寫webdav 模組

yum -y install expat-devel httpd-tools

git clone https://github.com/arut/nginx-dav-ext-module.git

cd openresty
./configure \
--with-http_dav_module \
--add-module=../nginx-dav-ext-module  

配置

cd conf/conf.d
cat > webdav.conf <<EOF
server {
    listen       8080;
    #server_name  dav.savorof.org;
    access_log  logs/webdav.access.log  main;
    location / {
        root    /var/www/soft/program;
        autoindex on;
        dav_methods PUT DELETE MKCOL COPY MOVE;
        dav_ext_methods PROPFIND OPTIONS;
        create_full_put_path  on;
        dav_access user:rw group:r all:r;
        auth_basic "Authorized Users Only";
        auth_basic_user_file /var/www/soft/.htpasswd;
    }
}

EOF

htpasswd -c /opt/soft/.htpasswd dav

win10對映網路驅動

因WebDAV未使用HTTPS協議,Win10是無法通過對映網路驅動器的方法進行掛載的。解決方法如下:
1、修改登錄檔:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters,把BasicAuthLevel 值改成2,即同時支援http和https,預設只支援https,
2、然後重啟服務:
net stop webclient
net start webclient

1、開啟我的電腦=>點計算機=>點對映網路驅動器
nginx實戰(二)  WebDAV 模組 http_dav_module

2、在資料夾位置填寫webdav 服務的訪問地址

nginx實戰(二)  WebDAV 模組 http_dav_module

3、連線上後,會讓你輸入賬號密碼
nginx實戰(二)  WebDAV 模組 http_dav_module

4、點選完成就連線成功了
nginx實戰(二)  WebDAV 模組 http_dav_module

Centos 7 對映網路驅動

yum -y install davfs2
mkdir /mnt/test
mount -t davfs http://xxx.xxx.xxx:8080/ /mnt/test/

mac os 對映網路驅動

在 Mac 上的“訪達” 中,選取“前往”>“連線伺服器”,在“伺服器地址”欄中輸入伺服器的地址,然後點按“連線”。

webdav 客戶端 for win

根據自己的測試,windows下還是專用的客戶端比較穩定,我測試的是cyberduck 。
下載地址 https://cyberduck.io/

配置引數說明

官網 http://nginx.org/en/docs/http/ngx_http_dav_module.html
中文翻譯 https://blog.lyz810.com/article/2016/05/ngx_http_dav_module_doc_zh-cn/

感謝百度,讓我不斷獲取知識