Nginx配置WebDav-制作私有網(wǎng)盤

環(huán)境

宿主機(jī): window10

服務(wù)器: CentOS7(Linux)

Nginx : 1.18.0

網(wǎng)盤映射: RaiDrive

前言

  • 什么是Webdav

引用維基百科的解釋:

基于Web的分布式編寫和版本控制(WebDAV)是超文本傳輸協(xié)議(HTTP)的擴(kuò)展管怠,有利于用戶間協(xié)同編輯和管理存儲在萬維網(wǎng)服務(wù)器文檔几晤。WebDAV由互聯(lián)網(wǎng)工程任務(wù)組的工作組在RFC 4918中定義钙姊。

WebDAV擴(kuò)展了request方法所允許的標(biāo)準(zhǔn)HTTP謂詞和HTTP頭柬焕。增加的謂詞包括:

(1).COPY: 將資源從一個URI復(fù)制到另一個URI

(2).LOCK:鎖定一個資源哥蔚,webdav支持共享鎖和互斥鎖

(3).MKCOL: 創(chuàng)建集合(即目錄)

(3).MOVE: 將資源從一個URI移動到另一個URI

(4).PROPFIND: 從Web資源中檢索以XML格式存儲的屬性册烈。它也被重載倘屹,以允許一個檢索遠(yuǎn)程系統(tǒng)的集合結(jié)構(gòu)(也叫目錄層次結(jié)構(gòu))候址。

(5).PROPPATCH: 在單個原子性動作中更改和刪除資源的多個屬性

(6).UNLOCK: 解除資源的鎖定

  • 2.Nginx-dav-ext-module是用來干嘛的

官方介紹:

The standard ngx_http_dav_module provides partial WebDAV implementation and only supports GET,HEAD,PUT,DELETE,MKCOL,COPY,MOVE methods.
For full WebDAV support in nginx you need to enable the standard ngx_http_dav_module as well as this module for the missing methods.

大致意思就是,標(biāo)準(zhǔn)的ngx_http_dav_module 提供了部分的WebDAV是實現(xiàn)族扰,只支持GET厌丑,HEAD, PUT定欧,DELETE,MKCOL,COPY,MOVE 方法,但是為了在Nginx中獲取完整的WebDAV支持怒竿,就需要啟用標(biāo)準(zhǔn)的ngx_http_dav_module這個模塊來處理缺少的方法砍鸠。

RFC4918

基于Web的分布式編寫和版本控制

nginx-dav-ext-module

構(gòu)建

下載ngx-dav-ext-module

如果你的服務(wù)器上安裝了Git可以直接使用下面的命令:

cd /usr/local/src && git clone --recursive https://github.com/arut/nginx-dav-ext-module

如果沒有Git 也可以將其在宿主機(jī)上下載完成后,上傳至服務(wù)器耕驰。

重新編譯Nginx

這里我已經(jīng)將Nginx提前安裝完畢了(使用的是Yum安裝的), 但是我們需要重新編譯安裝爷辱,將ngx-dav-ext-module加入到Nginx中。

  • 1.查看原有的編譯參數(shù)
[root@xxxx ~]# nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx --group=nginx \
--with-compat \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' \
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' \
--add-module=/usr/local/src/ngx_cache_purge-2.3 \
--add-module=/usr/local/src/headers-more-nginx-module-0.33
  • 2.將原有的Nginx備份
mv /usr/sbin/nginx /usr/sbin/nginx.bak
  • 3.下載和自己原有的Nginx版本相同的源碼包(如:1.18.0)朦肘, 并解壓
tar -xzvg nginx-1.18.0.tar.gz
cd nginx-1.18.0
  • 4.對新版重新編譯配置

根據(jù)第一步拿到自己的原有的配置饭弓,并在后面加入如下的配置:

....
+ --with-http_dav_module --add-module=/usr/local/src/nginx-dav-ext-module

這里的路徑一定是要你放置ngx-dav-ext-module的位置,不然后面編譯會出現(xiàn)無法找到該路徑

※ 如果出現(xiàn)了如下錯誤:

/configure: error: the HTTP XSLT module requires the libxml2/libxslt

說明缺少依賴:

yum -y install libxml2 libxml2-dev
yum -y install libxslt-devel
  • 5.編譯
make -j12
# 可以使用 下面的命令查看上一條命令 是否成功
echo ?$ 
  • 5.進(jìn)入obj目錄媒抠,替換原有的Nginx
cp objs/nginx /usr/local/nginx/sbin/nginx

確認(rèn)模塊啟用

nginx -V

可見配置的參數(shù)后面有加載模塊:

--with-http_dav_module --add-module=/usr/local/src/nginx-dav-ext-module

創(chuàng)建上傳目錄

mkdir -p /home/www/webdav
# 設(shè)置文件所有者 如果是所有人都可以使用的話設(shè)置  nobody:nobody
chown nginx:nginx /home/www/webdav
# 設(shè)置文件權(quán)限
chmod -R 700 /home/www/webdav

配置身份驗證

  • 1.安裝httpd工具
yum -y install httpd-tools
  • 2.創(chuàng)建密碼文件
htpasswd -c /opt/soft/.htpasswd dav
# 如果還有用戶
htpasswd /opt/soft/.htpasswd user1
  • 3.密碼文件權(quán)限配置
chown nginx:nginx /opt/soft/.htpasswd
chmod 600 /opt/soft/.htpasswd

配置nginx

...
location /webdav {
client_max_body_size 5G; # 最大允許上傳文件大小
alias /home/www/webdav;
index index.html index.htm;
autoindex on;
# autoindex_localtime on;
set $dest $http_destination;
# 對目錄請求弟断、對URI自動添加"/" 
if (-d $request_filename) {  
rewrite ^(.*[^/])$ $1/; 
set $dest $dest/; 
}
# 對MOVE|COPY方法強(qiáng)制添加Destination請求頭 
if ($request_method ~ (MOVE|COPY)) {
more_set_input_headers 'Destination: $dest'; 
}
if ($request_method ~ MKCOL) { 
rewrite ^(.*[^/])$ $1/ break; 
}
# webdav config
client_body_temp_path /tmp;
dav_methods PUT DELETE MKCOL COPY MOVE; #DAV支持的請求方法
dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; # DAV擴(kuò)展支持的請求方法
create_full_put_path on;  # 啟用創(chuàng)建目錄支持
dav_access group:rw all:r; # 創(chuàng)建文件的以及目錄的訪問權(quán)限
# auth_basic "Authorized Users Only";
# auth_basic "Authorized Users WebDAV";
auth_basic "user login";
auth_basic_user_file /opt/soft/.htpasswd;
}
...

根據(jù)自己需求,設(shè)置路徑趴生,以及文件存路徑

  • 重啟Nginx
sytemctl restart nginx

客戶端

我這里使用的是windows阀趴,其實有很多工具

如:

Cyberduck: 官方地址: https://cyberduck.io/

我這里使用的是 RaiDrive: 官方地址: http://www.raidrive.com/

RaiDive配置

輸入自己對應(yīng)的配的配置,然后點擊確定 苍匆。此時打開我們的資源管理器(win + E)

資源管理器 盤符

此時我們就可以像使用本地文件一樣操作服務(wù)器上的文件了刘急。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锉桑,隨后出現(xiàn)的幾起案子排霉,更是在濱河造成了極大的恐慌,老刑警劉巖民轴,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攻柠,死亡現(xiàn)場離奇詭異,居然都是意外死亡后裸,警方通過查閱死者的電腦和手機(jī)瑰钮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來微驶,“玉大人浪谴,你說我怎么就攤上這事∫蚱唬” “怎么了苟耻?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扶檐。 經(jīng)常有香客問我凶杖,道長,這世上最難降的妖魔是什么款筑? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任智蝠,我火速辦了婚禮腾么,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杈湾。我一直安慰自己解虱,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布漆撞。 她就那樣靜靜地躺著殴泰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叫挟。 梳的紋絲不亂的頭發(fā)上艰匙,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機(jī)與錄音抹恳,去河邊找鬼。 笑死署驻,一個胖子當(dāng)著我的面吹牛奋献,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旺上,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瓶蚂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宣吱?” 一聲冷哼從身側(cè)響起窃这,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎征候,沒想到半個月后杭攻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡疤坝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年兆解,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跑揉。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锅睛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出历谍,到底是詐尸還是另有隱情现拒,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布望侈,位于F島的核電站印蔬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏甜无。R本人自食惡果不足惜扛点,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一哥遮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧陵究,春花似錦眠饮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至松蒜,卻和暖如春扔茅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秸苗。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工召娜, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惊楼。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓玖瘸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親檀咙。 傳聞我的和親對象是個殘疾皇子雅倒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容