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

Я использую приложение, которое должно 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?

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

4 ответа

Решение

Чтобы добавить методы 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 для HttpDavModule.

Еще одна причина 405 Not Allowed является то, что у вас нет разрешения на запись файлов в место назначения вы PUTING. Если у вас есть HttpDavModule и по-прежнему получаю эту ошибку, убедитесь, что вы дали разрешения на запись nginx, где вы находитесь PUTв файлах.

nginx в основном прокси и многое другое, что-то разделяет с веб-сервером, не все.

Вы можете проверить: https://www.nginx.com/resources/wiki/modules/upload/ , лучше иметь интерфейс отдыха и позволить nginx выполнять прокси, балансировку, буферизацию, TSL..

Добавление этого блока решило для меня проблему в приложении Laravel.

location / {
     try_files $uri $uri/ /index.php?$query_string;
}
Другие вопросы по тегам