在 MogileFS 中使用 Nginx

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

内容简介:目前 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技术博客大学习


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

查看所有标签

猜你喜欢:

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

这就是OKR

这就是OKR

【美】约翰·杜尔(John Doerr) / 曹仰锋、王永贵 / 中信出版社 / 2018-12 / 68.00元

这本书是传奇风险投资人约翰·杜尔的作品,揭示了OKR这一目标设定系统如何促使英特尔、谷歌等科技巨头实现爆炸性增长,以及怎样促进所有组织的蓬勃发展。 20世纪70年代,在英特尔担任工程师时,杜尔首次接触到OKR。之后,作为一个风险投资人,杜尔不遗余力地将这一管理智慧,分享给50多家公司和机构,包括谷歌、亚马逊、领英、脸书、比尔及梅琳达·盖茨基金会,甚至摇滚歌手波诺的公益项目。在杜尔的帮助下,任......一起来看看 《这就是OKR》 这本书的介绍吧!

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

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具