在 MogileFS 中使用 Nginx
目前 Nginx 實在太火了, Nginx 對 MogileFS 的功能支援的非常好,測試也非常的穩定.所以推薦使用,目前在 MogileFS 中可以使用 Nginx 的地方有二個,一個是做為前端查詢和代理請求的客戶端.另一個是替換儲存檔案的 perlbal.
Nginx 做為 MogileFS 的前端客戶端
我們使用 Nginx 來吐檔案,做前端的查詢代理時,我們需要使用到 mogilefs 的這個模組.可以下載這個模組編譯進 Nginx 就行了.直接使用 ./configure -add-module= 這個引數就可以了.
最新的這個模組的下載地址是: https://github.com/vkholodkov/nginx-mogilefs-module
使用這個需要考慮到網站原來的 url 是什麼樣的.比如:
這個 URL 中的 UUID 是 A6B00135E24AB17E043B9B5453762438.png.這時我們使用這個做 key 來存成 MogileFS 中就行.
再結合 rewrite,只要 key 在 url 裡有,就能直接代理到後端的 mogilefs.象如下的寫法,會直接取 A6B00135E24AB17E043B9B5453762438.png 來做查詢用的 key.
location ~ ([^\/]+)$ {
mogilefs_tracker 192.168.1.xxx:7001;
mogilefs_domain img;
mogilefs_methods GET;
mogilefs_noverify on;
mogilefs_pass
$1
{
proxy_pass
$mogilefs_path
;
proxy_hide_header Content-Type;
proxy_buffering off;
}
}
使用 Nginx 來替換 storage nodes 上 mogstored 中的 Perlbal
我們可能想使用 Nginx 來替換 Perlbal 來做上傳和寫入,我們可以使用 Nginx 的dav 模組來實現這個.只要編譯 Nginx 時使用 -with-http_dav_module 就行了.目前這個模組好象是預設的.
server {
listen
7500;
charset utf-8;
location / {
autoindex on;
root /var/mogdata/;
dav_methods put
delete
mkcol copy move;
client_max_body_size 200m;
client_body_temp_path /data/temp;
create_full_put_path on;
dav_access user:rw group:rw all:r;
}
error_page 500 502 503 504 /50x.html;
location /50x.html {
root html;
}
}
在上面配置:
- autoindex : 一定需要設定,不然 mogadm check 時會顯示出錯.不然需要放一個 index.html 的檔案到/var/mogdata. 使用 mogadm 來檢查時 Nginx 才會返回 200 OK.
- client_max_body_size 如果要上傳比較大的檔案時,一定要設定這個.象我用來存視訊檔案,這個需要修改得非常大.
注意,上面這個 Nginx 是使用 nginx 的使用者來進行操作的,所以你需要給你的 /var/mogdata/ 目錄修改成 nginx 的使用者才行.
然後修改你的 mogstored.conf 這個檔案.關掉原來的 Perlbal 的監聽,但注意了 mogstored 這個服務還是必須啟動的.因為他會監控硬碟的好壞和 IO 的效能.只要給 server=none 就行了.就不會啟動了.
server=none
mgmtlisten=0.0.0.0:7501
docroot=/var/mogdata
這個可以開啟 Nginx 的日誌來進行 debug .可以觀查下列狀態程式碼:
201 (Created):源資源被成功移動,在目標上建立了一個新資源.這個使用 Nginx 後日志中會常常見到.
204 (No Content):源資源被成功地移動到一個預先存在的目標資源上.
403 (Forbidden):這個錯誤表明至少出現以下兩種情況之一:
1) 伺服器不允許在其名稱空間中的給定位置上建立集合,或者
2) Uniform Resource Indicator (URI) 請求的父集合存在,但是不接受成員.
405 (Method Not Allowed): mkcol() 方法只能在被刪除或不存在的資源上執行,所以資料夾存在使用這個時會報這個.
409 (Conflict):只有在建立了一個或多箇中間集合之後才能在目標上建立集合.
412 (Precondition Failed):伺服器不能維持 propertybehavior XML 屬性中列出的屬性的存活,或者 Overwrite 的頭是 F,目標資源的狀態不為 null.
415 (Unsupported Media Type):伺服器不支援主體的請求型別.
423 (Locked):源資源或目標資源被鎖.
502 (Bad Gateway):當目標在另一臺伺服器上,且目標伺服器拒絕接受資源時,將出現這種錯誤.
507 (Insufficient Storage):在執行該方法後資源沒有足夠的空間來記錄資源的狀態.
覺得文章有用?立即:和朋友一起共學習 共進步!
建議繼續學習:
- 配置Nginx+uwsgi更方便地部署python應用 (閱讀:104269)
- 搜狐閃電郵箱的 Nginx/Postfix 使用模式 (閱讀:31760)
- 解析nginx負載均衡 (閱讀:12776)
- Nginx模組開發入門 (閱讀:8841)
- nginx的配置檔案 (閱讀:7965)
- Cacti 新增 Nginx 監控 (閱讀:7661)
- 檢查nginx配置,過載配置以及重啟的方法 (閱讀:7542)
- 奇怪的 Nginx 的 upstream timed out 引起響應 502 (閱讀:6661)
- 解決IE6從Nginx伺服器下載圖片不Cache的Bug (閱讀:6440)
- 解決 nginx 反向代理網頁首尾出現神祕字元的問題 (閱讀:6121)
QQ技術交流群:445447336,歡迎加入!
掃一掃訂閱我的微訊號:IT技術部落格大學習