Nginx 做为 MogileFS 的前端客户端 我们使用 Nginx 来吐文件,做前端的查询代理时,我们需要使用到 mogilefs 的这个模块。可以下载这个模块编译进 Nginx 就行了.直接使用 ./configure --add-module= 这个参数就可以了。最新的这个模块的下载地址是:https://github.com/vkholodkov/nginx-mogilefs-module 使用这个需要考虑到网站原来的 url 是什么样的,比如: http://www.a.com/uploads/front_page/A6B00135E24AB17E043B9B5453762438.png 这个 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; } } 在上面配置:
然后修改你的 mogstored.conf 这个文件,关掉原来的 Perlbal 的监听。但注意了 mogstored 这个服务还是必须启动的,因为他会监控硬盘的好坏和 IO 的性能,只要给 server=none 就行了,就不会启动了。 server=none mgmtlisten=0.0.0.0:7501 docroot=/var/mogdata 这个可以打开 Nginx 的日志来进行 debug 。可以观查下列状态代码:
1) 服务器不允许在其名称空间中的给定位置上创建集合。
2) Uniform Resource Indicator (URI) 请求的父集合存在,但是不接受成员。
FQA:如果 Nginx 的错误日志报如下错误: 2012/03/12 17:51:05 [error] 7090#0: *299695 mkdir() "/var/mogdata/dev16/0/000/081" failed (17: File exists), client: 192.168.1.233, server: , request: "MKCOL /dev16/0/000/081/ HTTP/1.0" 可以直接到配置文件中给 dav_methods put delete mkcol copy move; 修改成 dav_methods put delete copy move; 这时就不会报这个错了,记得 create_full_put_path 这个参数一定要打开才行.这样性能也会好些。 转载请保留固定链接: https://linuxeye.com/Linux/587.html |