加上上傳模塊的nginx編譯和配置

在ubuntu安裝nginx還算是蠻容易的:sudo apt-get install nginx一條命令就可以解決雷猪。
但是如果要使用上傳模塊就必須重新編譯秸侣,這也就意味著原來使用apt-get安裝的nginx需要卸載掉包括配置文件:
sudo apt-get autoremove --purge nginx
然后下載nginx上傳所需要的模塊:

下載源代碼

1.下載上傳模塊和上傳進(jìn)度模塊

cd
mkdir tmp && cd tmp
git clone -b 2.2 https://github.com/vkholodkov/nginx-upload-module.git
git clone https://github.com/masterzen/nginx-upload-progress-module.git

2.下載nginx的源碼:
注意:這里用最新的1.12.0會(huì)報(bào)錯(cuò)(md5錯(cuò)誤裆针,沒有解決)恬口,用1.10.x就可以

http://nginx.org/en/download.html

直接上上面那個(gè)網(wǎng)站下載后解壓比伏。

安裝依賴:

sudo apt-get install libpcre3 libpcre3-dev 

可能還需要

sudo apt-get install openssl libssl-dev

開始編譯:

進(jìn)入下載解壓的nginx目錄

sudo ./configure  --add-module=/home/xxx/tmp/nginx-upload-module --add-module=/home/xxx/tmp/nginx-upload-progress-module

這里添加了兩個(gè)模塊敞曹,請(qǐng)對(duì)應(yīng)自己下載的兩個(gè)模塊地址。

sudo make 
make install

注意編譯最后要加上:

可進(jìn)行打包:(可忽略)

sudo apt-get install checkinstall #下載打包工具
sudo checkinstall -D -y -install=no -default make install

使用dpkg進(jìn)行安裝:

sudo dpkg -i nginx_1.4.6-1_amd64.deb

dpkg安裝時(shí)可能會(huì)遇到這個(gè)問題

dpkg: error processing archive nginx_1.4.6-1_amd64.deb (--install):
 trying to overwrite '/etc/nginx/win-utf', which is also in package nginx-common 1.10.0-0ubuntu0.16.04.4
Errors were encountered while processing:
 nginx_1.4.6-1_amd64.deb

這樣的話只要安裝時(shí)加一個(gè)參數(shù)即可综膀,這個(gè)做法會(huì)將之前的nginx覆蓋:

sudo dpkg -i --force-overwrite nginx_1.4.6-1_amd64.deb

修改nginx

在配置nginx之前:
需要將其他服務(wù)器/etc/init.d/nginx 這個(gè)文件拷貝過來澳迫,因?yàn)榫幾g安裝的nginx并沒有添加進(jìn)service 啟動(dòng)較為麻煩:
考過來之后需要改的地方有:

在PATH最后添加/usr/local/nginx/sbin:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/nginx/sbin:
DAEMON修改為:
DAEMON=/usr/local/nginx/sbin/nginx
NGINX_CONF_FILE修改
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

修改nginx的權(quán)限:

sudo chmod 755 /etc/init.d/nginx

現(xiàn)在就可以重新啟動(dòng)nginx了

sudo /etc/init.d/nginx -s reload

配置nginx文件:

可以參照這里https://hui.lu/upload-file-with-nginx-upload-file/

 location /upload {
 65             upload_pass @test; # 后端處理文件的地址,此處地址不應(yīng)和上面的/upload地址一樣
 66             upload_resumable on;
 67             upload_cleanup 400 413 404 499 500-505;
 68             upload_store /tmp 1;
 69             upload_store_access user:rw all:rw;
 70         #     upload_limit_rate 0;
 71             upload_set_form_field "file_name" $upload_file_name;
 72             upload_set_form_field "content_type" $upload_content_type;
 73             upload_set_form_field "tmp_path" $upload_tmp_path;
 74             upload_aggregate_form_field "md5" $upload_file_md5;
 75             upload_aggregate_form_field "size" $upload_file_size;
 76             upload_pass_form_field "^.*$";
 77         #     upload_pass_args on; #打開開關(guān)剧劝,意思就是把前端腳本請(qǐng)求的參數(shù)會(huì)傳給后端
 78         #     track_uploads proxied 30s; # 必須放最后一行
 79         }
 80         location @test {                                                                                   
 81             proxy_pass http://localhost:8080;
 82         }

使用upload module配置指令說明
upload_pass

文件上傳結(jié)束后代理到的地址橄登,同時(shí)將文件信息傳遞給此地址。

upload_resumble

是否開啟續(xù)傳讥此,默認(rèn)關(guān)閉

upload_store

上傳文件的存放位置拢锹,文件存放路徑被hash到子目錄中,注意nginx不會(huì)自動(dòng)創(chuàng)建子目錄萄喳,必須使用前創(chuàng)建卒稳,否則會(huì)報(bào)錯(cuò)

upload_state_store

斷點(diǎn)續(xù)傳狀態(tài)文件的存放位置,如果不配置他巨,會(huì)與文件hash存放到一個(gè)目錄下展哭,名稱為文件名.state,同上傳目錄一樣闻蛀,使用前必須創(chuàng)建子目錄

upload_store_access

nginx user對(duì)上傳文件的讀寫權(quán)限,默認(rèn)同時(shí)擁有讀寫權(quán)限

upload_set_form_field

聲名傳遞到后臺(tái)的參數(shù)名和值您市,一個(gè)文件可使用的屬性如下觉痛。

$upload_field_name:上傳表單中文件所屬的input輸入框的name屬性

$upload_content_type:文件類型

$upload_file_name:文件名

$upload_tmp_path:文件的存放路徑

upload_aggregate_form_field

與upload_set_form_field指令類似,將文件上傳結(jié)束后的屬性傳遞到后臺(tái)茵休,可使用的屬性如下薪棒。

$upload_file_md5:文件的md5sum值

$upload_file_md5_uc:大寫形式的文件md5sum值

$upload_file_sha1:文件的sha1 sum值

$upload_file_sha1_uc:大寫形式的文件sha1 sum值

$upload_file_crc32:16進(jìn)制的CRC32文件校驗(yàn)碼

$upload_file_size:文件大小,單位為bytes

$upload_file_number:文件體在請(qǐng)求體中的序號(hào)

upload_pass_form_field

聲名被傳遞到后臺(tái)的原表單字段榕莺,使用正則表達(dá)式

upload_cleanup

聲名后臺(tái)返回什么狀態(tài)碼時(shí)俐芯,nginx需要?jiǎng)h除上傳文件,狀態(tài)碼必須在400~500之間

upload_max_part_header_len

聲名最大的http頭長度钉鸯,即buffer size

upload_max_file_size

聲名允許上傳的文件大小限制吧史,官方文檔解釋為“軟”限制,即超過此大小的文件仍將被接收唠雕,而client_max_body_size為“硬”限制贸营。值為零表示無大小限制。

upload_limit_rate

聲名最大的上傳速度岩睁,0表示無限制

upload_max_output_body_len

聲名最大的輸出body大小钞脂,防止非file類型的輸入堆積到memory,0表示無限制

upload_tame_array

參數(shù)名中的中括號(hào)是否被丟掉

配置實(shí)例

處理上傳的路徑為:/nginx-upload捕儒,此地址為上傳表單的提交地址

文件上傳完成后冰啃,nginx會(huì)將請(qǐng)求代理到后端,本例中為自定義的location upload,代理到的地址還是/nginx-upload阎毅,當(dāng)然可以使用rewrite指令代理到例外一個(gè)地址焚刚。

后臺(tái)會(huì)接收到的參數(shù)名和值自定義,在本例子中分別為name净薛,content_type, path, md5, size, submit 和description

上傳文件時(shí)汪榔,action="/upload?X-Progress-ID=FmN6gTEshAHCcUvR" 其中X-Progress-ID需要是唯一的id,用來上傳時(shí)獲取進(jìn)度的id
獲取上傳進(jìn)度需向/progress發(fā)送一個(gè)get請(qǐng)求 /process?X-Progress-ID=FmN6gTEshAHCcUvR即可獲得上傳的進(jìn)度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肃拜,一起剝皮案震驚了整個(gè)濱河市痴腌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌燃领,老刑警劉巖士聪,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異猛蔽,居然都是意外死亡剥悟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門曼库,熙熙樓的掌柜王于貴愁眉苦臉地迎上來区岗,“玉大人,你說我怎么就攤上這事毁枯〈鹊蓿” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵种玛,是天一觀的道長藐鹤。 經(jīng)常有香客問我,道長赂韵,這世上最難降的妖魔是什么娱节? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮祭示,結(jié)果婚禮上肄满,老公的妹妹穿的比我還像新娘。我一直安慰自己质涛,他們只是感情好悄窃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蹂窖,像睡著了一般轧抗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞬测,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天横媚,我揣著相機(jī)與錄音纠炮,去河邊找鬼。 笑死灯蝴,一個(gè)胖子當(dāng)著我的面吹牛恢口,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播穷躁,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼耕肩,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了问潭?” 一聲冷哼從身側(cè)響起猿诸,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狡忙,沒想到半個(gè)月后梳虽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灾茁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年窜觉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片北专。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡禀挫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拓颓,到底是詐尸還是另有隱情语婴,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布录粱,位于F島的核電站,受9級(jí)特大地震影響画拾,放射性物質(zhì)發(fā)生泄漏啥繁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一青抛、第九天 我趴在偏房一處隱蔽的房頂上張望旗闽。 院中可真熱鬧,春花似錦蜜另、人聲如沸适室。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捣辆。三九已至,卻和暖如春此迅,著一層夾襖步出監(jiān)牢的瞬間汽畴,已是汗流浹背旧巾。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忍些,地道東北人鲁猩。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像罢坝,于是被迫代替她去往敵國和親廓握。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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