在 MogileFS 中使用 Nginx

目前 Nginx 实在太火了, Nginx 对 MogileFS 的功能支持的非常好,测试也非常的稳定.所以推荐使用,目前在 MogileFS 中可以使用 Nginx 的地方有二个,一个是做为前端查询和代理请求的客户端.另一个是替换存储文件的 perlbal.

Nginx 做为 MogileFS 的前端客户端


我们使用 Nginx 来吐文件,做前端的查询代理时,我们需要使用到 mogilefs 的这个模块.可以下载这个模块编译进 Nginx 就行了.直接使用 ./configure –add-module= 这个参数就可以了.
最新的这个模块的下载地址是:https://github.com/vkholodkov/nginx-mogilefs-module
使用这个需要考虑到网站原来的 url 是什么样的.比如:

1

2

 

 

这个 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;

        }

}

 

如果使用了多个 tracker 的话,要配置使用多个 tracker 来进行负载均衡和备份.可以直接配置 tracker 为 upstrame:

1

2

3

4

 

upstream online_mogilefs {

  server 10.0.0.1:7001;

  server 10.0.0.2:7001;

}

 

然后后面配置 tracker 的连接时,直接加上就行了

1

 

mogilefs_tracker online_mogilefs;

 

使用 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  如果要上传比较大的文件时,一定要设置这个.象我用来存视频文件,这个需要修改得非常大.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/60f62bd2e961ac302f952012428e7a8e.html