我正在使用需要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
?
任何线索都会很棒!
答案 0 :(得分:21)
要添加PUT,DELETE,MKCOL,COPY和MOVE等HTTP和WebDAV方法,您需要使用HttpDavModule
(./configure --with-http_dav_module
)编译nginx。首先检查nginx -V
,也许您已经拥有HttpDavModule
(I 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;
}