注意,上面这个 Nginx 是使用 nginx 的用户来进行操作的,所以你需要给你的 /var/mogdata/ 目录修改成 nginx 的用户才行.另外还有一点要非常注意 client_body_temp_path 的这个参数.建议给上面每个 dav 的设备都设置一个.不然会复制二份文件.然后在 copy 会影响性能,如果单独配置就不会 .象我不喜欢配置这么多,就给这个 temp 写到了 ssd 上面,没有你也可以直接写内存中(感谢Daniel Leaberry<leaberry@gmail.com>的建议).
然后修改你的 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):这个错误表明至少出现以下两种情况之一:
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):在执行该方法后资源没有足够的空间来记录资源的状态.
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"
可以直接到配置文件中给
1
dav_methods put delete mkcol copy move;
修改成
1
dav_methods put delete copy move;
这时就不会报这个错了,记得 create_full_put_path 这个参数一定要打开才行.这样性能也会好些.