Как разрешить запрос файла PUT на сервере Nginx?

я использую приложение, которое должно PUT файл на HTTP-сервере. Я использую Nginx в качестве сервера, но получаю 405 Not Allowed ошибки. Вот пример теста с завитком:

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?

любые подсказки были бы потрясающими!

2 ответов


чтобы добавить методы HTTP и WebDAV, такие как PUT, DELETE, MKCOL, COPY и MOVE, вам нужно скомпилировать nginx с HttpDavModule (./configure --with-http_dav_module). Проверка nginx -V во-первых, возможно, у вас уже есть HttpDavModule (Я установил nginx из репозитория Debian, и у меня уже есть модуль).

затем измените свой nginx-config следующим образом:

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

вы можете получить больше информации о запись nginx docs для HttpDavModule.


еще одна причина для 405 Not Allowed Это то, что у вас нет разрешения на запись файлов в пункт назначения, который вы PUTing. Если у вас есть HttpDavModule и все еще получая эту ошибку, убедитесь, что вы дали разрешения на запись nginx, где вы PUTing файлы.