首頁>技術>

WebDAV 基於 HTTP 協議的通訊協議,在GET、POST、HEAD等幾個HTTP標準方法以外添加了一些新的方法,使應用程式可對Web Server直接讀寫,並支援寫檔案鎖定(Locking)及解鎖(Unlock),還可以支援檔案的版本控制。

常用的檔案共享有三種:FTP、Samba、WebDAV,它們各有優缺點,瞭解後才能更好地根據自己的需求選擇方案。

FTP屬於古老的檔案共享方式了,因為安全性,現代瀏覽器最新已預設不能開啟FTP協議。SFTP在FTP基礎上增加了加密,在Linux上安裝OpenSSH後可以直接用SFTP協議傳輸。使用SFTP臨時傳送檔案還可以,但做檔案共享,效能不高,速度較慢。Samba是Linux下CIFS協議的實現,優勢在於對於小白使用簡章,和Windows系統檔案共享訪問一樣,不需要安裝第三方軟體,而且移動端也有大量APP支援。蘋果手機檔案APP中新增網路儲存用的就是這種方式。Windows下檔案共享使用445埠,且不能更改。445埠常常受駭客關照,在廣域網上大多運營封掉了訪埠,所以這種檔案共享只適合在內網使用。WebDAV 基於 HTTP 協議的通訊協議,在GET、POST、HEAD等幾個HTTP標準方法以外添加了一些新的方法,使應用程式可對Web Server直接讀寫,並支援寫檔案鎖定(Locking)及解鎖(Unlock),還可以支援檔案的版本控制。因為基於HTTP,在廣域網上共享檔案有天然的優勢,移動端檔案管理APP也大多支援WebDAV協議。使用HTTPS還能保安全性。Apache和Nginx支援WebDAV,可作為WebDAV檔案共享伺服器軟體。也可以使用專門的WebDAV軟體部署。WebDAV Server (推薦)

WebDAV 是 GitHub 上開源的專案,基於 Go 語言實現,不僅跨平臺,還支援 ARM 架構,可在㠌入式裝置中部署 WebDAV 伺服器。

專案地址:https://github.com/hacdias/webdav

在 GitHub 下載對應的架構 WebDAV,如:windows-amd64-webdav.zip 。解壓後獲得 webdav.exe 。

用文字編輯器新建 config.yaml 檔案,內容如下:

# 監聽任意網絡卡,多網絡卡可指定對應ipaddress: 0.0.0.0port: 8081# 如果無需驗證填 falseauth: true# 如果不需要 https 則填 falsetls: true# https證書和金鑰,如果 tls 為 false,cert 和 key 不需要cert: /data/www/cert/szhome.xf1024.com_nginx/cert.pemkey: /data/www/cert/szhome.xf1024.com_nginx/cert.key# 訪問字首,建議預設prefix: /# 如果 auth 為 false 生效,檔案共享的路徑scope: /data/users/public# 是否允許修改modify: truerules: []# 跨域設定cors:  enabled: true  credentials: true  allowed_headers:    - Depth  allowed_hosts:    - http://localhost:8081  allowed_methods:    - GET  exposed_headers:    - Content-Length    - Content-Range# 使用者資訊,如果 auth 為 true 生效users:  - username: user1    password: 123456    scope: /data/users/2021  - username: user2    password: 654321    scope: /data/users/2022

注意 yaml 檔案格式的書寫規則,users 下是需認證的使用者名稱,密碼,及使用者共享檔案。

使用時使用命令:

webdav -c ./config.yaml
Apache 開啟 WebDAV

Apache 開啟 WebDAV 需要開啟以下模組:

LoadModule dav_module modules/mod_dav.soLoadModule dav_fs_module modules/mod_dav_fs.soLoadModule dav_lock_module modules/mod_dav_lock.so

配置如下:

<VirtualHost *:80>    ServerName dav.engr-z.com    DocumentRoot /data/webdav    <Directory "/data/webdav">        Options Indexes FollowSymLinks        AllowOverride None        Dav on        AuthType Basic        AuthName "WebDAV Upload"        AuthUserFile conf/.htpasswd        AuthBasicProvider file        Require user webdav    </Directory></VirtualHost><VirtualHost *:443>    ServerName dav.engr-z.com    DocumentRoot /data/webdav    <Directory "/data/webdav">        Options Indexes FollowSymLinks        AllowOverride None        Dav on        AuthType Basic        AuthName "WebDAV Upload"        AuthUserFile conf/.htpasswd        AuthBasicProvider file        Require user webdav    </Directory>#	Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"    # 新增 SSL 協議支援協議,去掉不安全的協議    SSLProtocol all -SSLv2 -SSLv3    # 修改加密套件如下    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM    SSLHonorCipherOrder on    # 證書公鑰配置    SSLCertificateFile cert/dav.engr-z.com_apache/public.crt    # 證書私鑰配置    SSLCertificateKeyFile cert/dav.wangzhengzhen.com_apache/cert.key    # 證書鏈配置,如果該屬性開頭有 '#'字元,請刪除掉    SSLCertificateChainFile cert/dav.engr-z.com_apache/chain.crt</VirtualHost>

.htpasswd 檔案是儲存使用者名稱密碼的檔案,使用 apache 工具 htpasswd 建立:

htpasswd -c /etc/webdav/.htpasswd user1

如果需要建立多個使用者,在第二次執行時注意去掉 -c 引數,防止生成檔案覆蓋。

Nginx 開啟 WebDAV

在Nginx中實現WebDAV需要安裝 libnginx-mod-http-dav-ext 模組,以下是Nginx的配置:

server {        listen 80;        listen [::]:80;        server_name dav.engr-z.com;        auth_basic "Authorized Users Only";        auth_basic_user_file /etc/.htpasswd;        location / {                root /data/webdav;                client_body_temp_path /var/temp;                dav_methods PUT DELETE MKCOL COPY MOVE;                dav_ext_methods PROPFIND OPTIONS;                create_full_put_path on;                client_max_body_size 10G;        }}server {        listen 443;        listen [::]:443;        server_name dav.engr-z.com;        ssl on;        ssl_certificate /data/www/cert/dav.engr-z.com_nginx/cert.pem;        ssl_certificate_key /data/www/cert/dav.engr-z.com_nginx/cert.key;        ssl_session_timeout 5m;        ssl_protocols SSLv2 SSLv3 TLSv1;        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;        ssl_prefer_server_ciphers on;        location / {                root /data/webdav;                client_body_temp_path /var/temp;                dav_methods PUT DELETE MKCOL COPY MOVE;                dav_ext_methods PROPFIND OPTIONS;                create_full_put_path on;                client_max_body_size 10G;        }}

.htpasswd 使用者密碼檔案的建立方式和 Apache 一樣,htpasswd是apache的工具,如果使用nginx,可以單獨安裝該工具而不安裝整個apache。在Ubuntu中使用 sudo apt install apache2-utils 安裝。

Nginx 對 WebDAV 支援不是太好,建議使用 Apache 或專用於 WebDAV 服務軟體架設。

WebDAV掛載/對映Windows

開啟 “計算機” ,點右鍵新增一個網路位置,按嚮導填入地址,使用者名稱,密碼。

掛載指定碟符:

net use Y: https://dav.engr-z.com/ /user:engrz /persistent:YES 密碼

其中 qizheng 是我的使用者名稱密碼把 password 換成對應的密碼。/persistent 表示儲存對映,下次開機還在。執行完,開啟資源管理器,可以看到磁碟映射了。如果下次開機,發現不能開啟磁碟,訪問失敗,可以檢查 WebClient 服務是否開啟。

從Windows Vista起,微軟就禁用了http形式的基本WebDAV驗證形式(KB841215),必須使用https連線。我們可以修改登錄檔……

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters找到BasicAuthLevel把這個值從1改為2,然後進控制面板,服務,把WebClient服務重啟(沒有啟動的就啟動它)。

在某些版本的 Windows 作業系統中,WebDAV 驅動器的最大檔案大小被限制為 50MB。如果你試圖複製超過 50MB 大小的檔案,Windows 就會彈出錯誤提示框。當然,這個限制是可以透過修改登錄檔來消除的。

將登錄檔中位於HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\FileSizeLimitInBytes處的鍵值由 50000000 (50MB) 修改為更大的數值。最大修改為:4294967295(0xffffffff)位元組,即4G。

這裡推薦使用免費軟體 RaiDrive ,透過 RaiDrive 對映的磁碟,沒有 http 和 上傳檔案大小限制,無需修改登錄檔。

RaiDrive 是一款能夠將一些網盤對映為本地網路磁碟的工具,支援 Google Drive、Google Photos、Dropbox、OneDrive、FTP、SFTP、WebDAV。

下載地址:https://www.raidrive.com

Linux

Linux 的檔案管理工具大多都支援 WebDAV ,以 Ubuntu 為例:

還可以使用命令掛載,需要安裝 davfs2 :

apt install davfs2

執行命令後系統會自動安裝,出現以下提示,選是。

掛載:

本文連結:https://engr-z.com/238.html

28
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • html執行程式碼