Featured image of post 在Nginx上搭建WebDAV服務

在Nginx上搭建WebDAV服務

在 Nginx 搭建 WebDAV 是在已有模組的基礎上。如何安裝 WebDAV 模組請查看文章:https:…

在 Nginx 搭建 WebDAV 是在已有模組的基礎上。如何安裝 WebDAV 模組請查看文章:https://bmzhp.com/experience/215.html

要在 Nginx 上搭建 WebDAV 服務,請按照以下步驟:

  1. 確認 Nginx 已經安裝並正常運作。

  2. 創建一個 WebDAV 根目錄,並授予寫入權限。例如,您可以使用以下命令來創建並授予權限:

    1
    2
    
    mkdir /path/to/webdav
    chown www-data:www-data /path/to/webdav
    

若您的環境是 LNMP,使用者需要改為 www,所以命令應為 chown -R www:www /path/to/webdav

  1. 配置 Nginx 以啟用 WebDAV 模組,並指定 WebDAV 根目錄。將以下程式碼添加到 Nginx 配置檔中:

    1
    2
    3
    4
    5
    6
    7
    
    location /webdav {
        alias /path/to/webdav;
        client_body_temp_path /var/nginx/client_temp;
        dav_methods PUT DELETE MKCOL COPY MOVE;
        create_full_put_path on;
        dav_access user:rw group:rw all:r;
    }
    

在上面的程式碼中,“/webdav”是您要映射到 WebDAV 服務的 URL 路徑,而“/path/to/webdav”則是 WebDAV 根目錄。您可以根據需要修改這些值。

在 Nginx 中,client_body_temp_path 指令用於指定接收客戶端請求正文的臨時檔案儲存路徑。WebDAV 協議允許對大型檔案進行操作,這可能會導致上傳或下載過程中的內存消耗過多。為了避免內存溢出問題,Nginx 會將上傳的大檔案先緩存到磁碟上,然後再寫入 WebDAV 根目錄。

因此,在配置 WebDAV 服務時,通常需要設置 client_body_temp_path 指令來指定磁碟上的臨時檔案儲存路徑。該指令必須置於 location 指令內,以確保其僅適用於 WebDAV 服務。

上述的 WebDAV 配置程式碼並不允許匿名訪問和上傳檔案。

在這段程式碼中,dav_access 指令指定在訪問 WebDAV 服務時需要使用用戶名和密碼進行認證。如果您未為 WebDAV 服務指定用戶名和密碼,則無法訪問該服務,更無法上傳檔案。

以下是具有匿名訪問權限的示例配置(不建議在生產環境中使用):

1
2
3
4
5
6
7
location /webdav {
    alias /path/to/webdav;
    client_body_temp_path /var/nginx/client_temp;
    dav_methods PUT DELETE MKCOL COPY MOVE;
    create_full_put_path on;
    dav_access group:rw all:r;
}

在這個配置中,dav_access 指令的參數為“group:rw all:r”,表示任何人皆可以只讀方式訪問該 WebDAV 服務,且只有所屬群組的用戶才能以讀/寫方式訪問該服務。

請注意,如果允許匿名上傳檔案,這可能會導致安全問題。建議在確保安全的情況下再啟用匿名上傳權限。

  1. 重新加載 Nginx 配置檔以使更改生效:
1
sudo service nginx reload

現在,您的 Nginx 伺服器上已成功部署 WebDAV 服務。您可以使用任何支援 WebDAV 協議的客戶端,如 Windows 檔案總管或 Cyberduck 等,連接到 WebDAV 服務並訪問其中的檔案。請注意,您需要使用具有寫入權限的用戶身份驗證來上傳和修改檔案。

使用 Hugo 建立
主題 StackJimmy 設計