在 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.
01
02
03
04
05
06
07
08
09
10
11
12 |
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 就行了.目前这个模块好象是默认的.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19 |
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 就行了.就不会启动了.
1
2
3 |
server=none mgmtlisten=0.0.0.0:7501 docroot=/var/mogdata |
这个可以打开 Nginx 的日志来进行 debug .可以观查下列状态代码:
201 (Created):源资源被成功移动,在目标上创建了一个新资源.这个使用 Nginx 后日志中会常常见到.
204 (No Content):源资源被成功地移动到一个预先存在的目标资源上.
403 (Forbidden):这个错误表明至少出现以下两种情况之一:
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应用 (阅读:105382)
- 搜狐闪电邮箱的 Nginx/Postfix 使用模式 (阅读:32506)
- 解析nginx负载均衡 (阅读:14456)
- Nginx模块开发入门 (阅读:9835)
- 检查nginx配置,重载配置以及重启的方法 (阅读:9060)
- Cacti 添加 Nginx 监控 (阅读:8896)
- Nginx+FastCgi+Php 的工作机制 (阅读:8823)
- nginx的配置文件 (阅读:8793)
- 奇怪的 Nginx 的 upstream timed out 引起响应 502 (阅读:8085)
- 解决IE6从Nginx服务器下载图片不Cache的Bug (阅读:7082)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:扶 凯 来源: 扶凯
- 标签: MogileFS Nginx
- 发布时间:2012-03-11 22:19:49
- [66] Oracle MTS模式下 进程地址与会话信
- [66] Go Reflect 性能
- [65] 如何拿下简短的域名
- [59] android 开发入门
- [59] 图书馆的世界纪录
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则