How do I allow a PUT file request on Nginx server?

末鹿安然 提交于 2019-11-26 09:48:35

问题


I am using an application which needs to PUT a file on a HTTP server. I am using Nginx as the server but getting a 405 Not Allowed error back. Here is an example of a test with cURL:

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

And what I get back from 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>

What do I need to do to allow the PUT?

Any clues would be awesome!


回答1:


To add HTTP and WebDAV methods like PUT, DELETE, MKCOL, COPY and MOVE you need to compile nginx with HttpDavModule (./configure --with-http_dav_module). Check nginx -V first, maybe you already have the HttpDavModule (I installed nginx from the Debian repository and I already have the module).

Then change your nginx-config like that:

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

You can get more info on the nginx docs entry for the HttpDavModule.




回答2:


Another reason for 405 Not Allowed is that you don't have permission to write files on the destination you're PUTing. If you have HttpDavModule and still getting this error, make sure you've given nginx write permissions where you're PUTing the files.



来源:https://stackoverflow.com/questions/16912270/how-do-i-allow-a-put-file-request-on-nginx-server

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!