14

我正在使用一个需要PUTHTTP 服务器上的文件的应用程序。我使用 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

任何线索都会很棒!

4

3 回答 3

23

要添加 HTTP 和 WebDAV 方法,如 PUT、DELETE、MKCOL、COPY 和 MOVE,您需要使用HttpDavModule( ./configure --with-http_dav_module) 编译 nginx。首先检查一下nginx -V,也许你已经有了HttpDavModule我从 Debian 存储库安装了 nginx,并且我已经有了模块)。

然后像这样更改您的 nginx-config :

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

您可以获取有关HttpDavModule 的 nginx 文档条目的更多信息。

于 2013-06-04T10:40:39.337 回答
1

另一个原因405 Not Allowed是您没有权限在您正在访问的目标上写入文件PUT。如果您有HttpDavModule并且仍然收到此错误,请确保您已在您正在PUT输入文件的位置授予 nginx 写入权限。

于 2015-11-15T21:34:52.153 回答
0

添加这个块解决了我在 Laravel 应用程序中的问题。

location / {
     try_files $uri $uri/ /index.php?$query_string;
}
于 2020-10-05T20:10:43.907 回答