2013-06-04 81 views
6

我正在使用的应用程序需要PUT HTTP服务器上的文件。我使用Nginx作为服务器,但得到405 Not Allowed错误。这里是卷曲测试的例子:如何在Nginx服务器上允许PUT文件请求?

curl -X PUT \ 
-H 'Content-Type: application/x-mpegurl' \ 
-d /Volumes/Extra/playlist.m3u8 http://xyz.com 

而我回来的Nginx的:

<html> 
<head><title>405 Not Allowed</title></head> 
<body bgcolor="white"> 
<center><h1>405 Not Allowed</h1></center> 
<hr><center>nginx/1.1.19</center> 
</body> 
</html> 

什么我需要做的,让PUT

任何线索都会很棒!

回答

16

要添加PUT,DELETE,MKCOL,COPY和MOVE等HTTP和WebDAV方法,您需要编译HttpDavModule./configure --with-http_dav_module)的nginx。首先检查nginx -V,也许你已经有HttpDavModuleI installed nginx from the Debian repository and I already have the module)。

然后改变你的nginx,配置这样的:

location/{ 
    root  /var/www; 
    dav_methods PUT; 
} 

你可以在nginx docs entry for the HttpDavModule更多信息。

+1

如果我不需要创建文件,只需使用其他HTTP方法会怎样? –

+1

不起作用,'405不允许' – Green

+0

如果您不想让您的请求由dav_methods处理并且想要使用PUT或DELETE方法,则应确保这些请求不与索引模块匹配,而是通过try_files ie:try_files $ uri /index.php$is_args$args;在使用PHP进行典型设置的情况下 – dadasign

1

405 Not Allowed的另一个原因是您没有权限在目标PUT上写入文件。如果您有HttpDavModule,但仍然出现此错误,请确保已为文件提供了nginx写入权限。

相关问题