在 MogileFS 中使用 Nginx

栏目: 服务器 · 发布时间: 6年前

内容简介:目前 Nginx 实在太火了, Nginx 对 MogileFS 的功能支持的非常好,测试也非常的稳定.所以推荐使用,目前在 MogileFS 中可以使用 Nginx 的地方有二个,一个是做为前端查询和代理请求的客户端.另一个是替换存储文件的 perlbal.我们使用 Nginx 来吐文件,做前端的查询代理时,我们需要使用到 mogilefs 的这个模块.可以下载这个模块编译进 Nginx 就行了.直接使用 ./configure -add-module= 这个参数就可以了.最新的这个模块的下载地址是:

目前 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):在执行该方法后资源没有足够的空间来记录资源的状态.

觉得文章有用?立即:和朋友一起 共学习 共进步!

建议继续学习:

  1. 配置Nginx+uwsgi更方便地部署 python 应用    (阅读:104269)
  2. 搜狐闪电邮箱的 Nginx/Postfix 使用模式    (阅读:31760)
  3. 解析nginx负载均衡    (阅读:12776)
  4. Nginx模块开发入门    (阅读:8841)
  5. nginx的配置文件    (阅读:7965)
  6. Cacti 添加 Nginx 监控    (阅读:7661)
  7. 检查nginx配置,重载配置以及重启的方法    (阅读:7542)
  8. 奇怪的 Nginx 的 upstream timed out 引起响应 502    (阅读:6661)
  9. 解决IE6从Nginx服务器下载图片不Cache的Bug    (阅读:6440)
  10. 解决 nginx 反向代理网页首尾出现神秘字符的问题    (阅读:6121)

QQ技术交流群:445447336,欢迎加入!

扫一扫订阅我的微信号:IT技术博客大学习


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First HTML and CSS

Head First HTML and CSS

Elisabeth Robson、Eric Freeman / O'Reilly Media / 2012-9-8 / USD 39.99

Tired of reading HTML books that only make sense after you're an expert? Then it's about time you picked up Head First HTML and really learned HTML. You want to learn HTML so you can finally create th......一起来看看 《Head First HTML and CSS》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码