ebDAV 基于 HTTP 協議的通信協議,在GET、POST、HEAD等幾個HTTP標準方法以外添加了一些新的方法,使應用程序可對Web Server直接讀寫,并支持寫文件鎖定(Locking)及解鎖(Unlock),還可以支持文件的版本控制。
常用的文件共享有三種:FTP、Samba、WebDAV,它們各有優缺點,了解后才能更好地根據自己的需求選擇方案。
WebDAV 是 GitHub 上開源的項目,基于 Go 語言實現,不僅跨平臺,還支持 ARM 架構,可在?入式設備中部署 WebDAV 服務器。
項目地址:https://github.com/hacdias/webdav
在 GitHub 下載對應的架構 WebDAV,如:windows-amd64-webdav.zip 。解壓后獲得 webdav.exe 。
用文本編輯器新建 config.yaml 文件,內容如下:
# 監聽任意網卡,多網卡可指定對應ip
address: 0.0.0.0
port: 8081
# 如果無需驗證填 false
auth: true
# 如果不需要 https 則填 false
tls: true
# https證書和密鑰,如果 tls 為 false,cert 和 key 不需要
cert: /data/www/cert/szhome.xf1024.com_nginx/cert.pem
key: /data/www/cert/szhome.xf1024.com_nginx/cert.key
# 訪問前綴,建議默認
prefix: /
# 如果 auth 為 false 生效,文件共享的路徑
scope: /data/users/public
# 是否允許修改
modify: true
rules: []
# 跨域設置
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 需要打開以下模塊:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule 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需要安裝 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 服務軟件架設。
打開 “計算機” ,點右鍵添加一個網絡位置,按向導填入地址,用戶名,密碼。
掛載指定盤符:
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 的文件管理工具大多都支持 WebDAV ,以 Ubuntu 為例:
還可以使用命令掛載,需要安裝 davfs2 :
apt install davfs2
執行命令后系統會自動安裝,出現以下提示,選是。
掛載:
sudo mount -t davfs http://dav.engr-z/ ./webdav/
除非注明,否則均為"攻城獅·正"原創文章,轉載請注明出處。
本文鏈接:https://engr-z.com/238.html
步驟如下:
1、設置共享目錄的應用:
2、將要共享的目錄權限設置成everyone能讀取,如下圖所示:
3、設置目錄啟用文件瀏覽功能,如下圖所示:
4、然后就可以通過瀏覽器訪問下載共享目錄的文件,如下圖所示:
步驟如下:
1、啟用WebDAV,如下圖所示:
2、設置Webdav共享目錄,如下圖所示:
3、在Windows的資源管理器添加webdav,如下圖所示:
在安裝好nginx后,設置配置文件nginx.conf 在 server 或 location 段里面加上 autoindex on 以及設置主目錄為要共享的目錄,如下圖所示:
1、添加支持模塊
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
2、為DocumentRoot目錄添加Options Indexes
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
</Directory>
這里Indexes控制是否打開目錄瀏覽,如果要關閉目錄瀏覽,使用
Option -Indexes
3、加載 httpd-autoindex.conf 配置
Include conf/extra/httpd-autoindex.conf
在配置文件httpd-autoindex.conf中的修改:
IndexOptions FancyIndexing HTMLTable VersionSort NameWidth=* FoldersFirst Charset=UTF-8 SuppressDescription SuppressHTMLPreamble
步驟如下:
Python2.7 ,在要共享文件夾位置執行命令:
python2 -m SimpleHTTPServer
Python3 ,在要共享文件夾位置執行命令:
python3 -m http.server
步驟如下:
通過pip 進行安裝,安裝命令為:
pip install cheroot wsgidav
安裝后執行以下命令開啟webdav文件管理共享服務:
wsgidav --host=0.0.0.0 --port=80 --root=/tmp --auth=anonymous
步驟如下:
Windows 系統快速安裝,在Windows PowerShell環境中執行以下命令行:
iwr -useb https://raw.githubusercontent.com/filebrowser/get/master/get.ps1 | iex
快速運行,參數為要共享管理的文件夾路徑:
filebrowser -r c:\。
Linux系統快速安裝,在命令行執行以下命令行:
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
快速運行,參數為要共享管理的文件夾路徑:
filebrowser -r /path/to/your/files
Mac系統快速安裝,在命令行執行以下命令行:
brew tap filebrowser/tap
brew install filebrowser
快速運行,參數為要共享管理的文件夾路徑:
filebrowser -r /path/to/your/files
瀏覽器訪問界面如下:
登錄界面
主界面
用戶管理界面
步驟如下:
1、項目網址https://github.com/Forceu/Gokapi/,最新版下載:
2、下載后運行,設置用戶名和密碼,如下圖所示:
第一次運行界面
3、瀏覽器訪問,如下圖所示:
登錄界面
4、上傳要共享的文件,如下圖所示:
主界面,上傳要共享的文件
5、如上圖所示,可以把要共享文件的URL鏈接復制出來發送個要訪問下載的人。
項目安裝后使用界面如下:
主界面
上傳文件界面
上傳完成界面。