title: 基於Nginx搭建WebDAV服務
categories:
- [IT,網路,服務]
tags:
- WebDAV
- Nginx
comments: true
date: 2022-11-09 17:19:46
description:
在搭建 Joplin 筆記服務的時候,發現了可以通過 WebDAV 服務來實現雲筆記的功能,所以本篇就來介紹一下,怎麼快速搭建 WebDAV 服務。
WebDAV (Web-based Distributed Authoring and Versioning) 一種基於 HTTP 1.1協定的通訊協定。它擴充套件了HTTP 1.1,在GET、POST、HEAD等幾個HTTP標準方法以外新增了一些新的方法,使應用程式可對[Web Server](https://baike.baidu.com/item/Web Server/9306055?fromModule=lemma_inlink)直接讀寫,並支援寫檔案鎖定(Locking)及解鎖(Unlock),還可以支援檔案的版本控制。
從我的角度,簡單地理解為,類似於FTP服務,提供網路檔案互動服務。可以使用使用者名稱和密碼來控制存取,通過特定的使用者端,可以直接儲存、下載、編輯檔案。
這裡我是用寶塔面板來實現整個過程的,知曉原理後,也可以用其他類似的手段實現。
官方安裝範例 [Nginx http_dav_module](Module ngx_http_dav_module (nginx.org))
在寶塔面板,Nginx 安裝中選擇 編譯安裝,並點選 新增自定義模組。
模組名稱:http_dav_module
模組描述:webdev
模組引數:--with-http_dav_module --add-module=/root/nginx-dav-ext-module
前置指令碼:git clone https://github.com/arut/nginx-dav-ext-module.git /root/nginx-dav-ext-module
標準的 ngx_http_dav_module 提供了部分WebDAV實現,僅支援GET、HEAD、PUT、DELETE、MKCOL、COPY和MOVE方法。要在 Nginx 中獲得完整的 WebDAV 支援,您需要啟用 ngx_http_dav_module 以及此模組(nginx-dav-ext-module)以補充缺少的方法,如:PROPFIND,OPTIONS,LOCK,UNLOCK。
新增一個新網站
在組態檔中新增以下內容(別忘了還要新增第二行程式碼,就在server
上面新增):
http {
dav_ext_lock_zone zone=foo:1m; # 預設鎖超時值為 1 分鐘
...
server {
...
location / {
root /www/wwwroot/webdav;
client_body_temp_path /www/wwwroot/webdav/client_temp;
#client_max_body_size 102400M;#大檔案支援
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_put_path on;
dav_access user:rw group:rw all:r;
autoindex on;
# 需要 nginx-dav-ext-module 才有下面的選項
dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;
dav_ext_lock zone=foo;
}
}
}
在 網站目錄 加入密碼保護即可
接下來,就可以在需要 WebDAV 服務的地方使用了。
比如:Joplin
WebDAV URL:就是你存取那個 WebDAV 網站的地址
使用者名稱和密碼:就是剛才設定的密碼存取