如何在Nginx服务器上允许PUT文件请求?

时间:2013-06-04 07:38:12

标签: http nginx put

我正在使用需要PUT HTTP服务器上的文件的应用程序。我使用Nginx作为服务器,但收到405 Not Allowed错误。以下是使用cURL进行测试的示例:

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

任何线索都会很棒!

3 个答案:

答案 0 :(得分:21)

要添加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-config:

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

您可以在nginx docs entry for the HttpDavModule上获得更多信息。

答案 1 :(得分:2)

405 Not Allowed的另一个原因是您没有权限在PUT {目标}的目的地上撰写文件。如果您有HttpDavModule但仍然收到此错误,请确保您已经PUT Animal文件中的nginx写入权限。

答案 2 :(得分:0)

添加此块可以在Laravel应用程序中为我解决问题。

location / {
     try_files $uri $uri/ /index.php?$query_string;
}