Как разрешить запрос файла 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
является то, что у вас нет разрешения на запись файлов в место назначения вы PUT
ING. Если у вас есть HttpDavModule
и по-прежнему получаю эту ошибку, убедитесь, что вы дали разрешения на запись nginx, где вы находитесь PUT
в файлах.
nginx в основном прокси и многое другое, что-то разделяет с веб-сервером, не все.
Вы можете проверить: https://www.nginx.com/resources/wiki/modules/upload/ , лучше иметь интерфейс отдыха и позволить nginx выполнять прокси, балансировку, буферизацию, TSL..
Добавление этого блока решило для меня проблему в приложении Laravel.
location / {
try_files $uri $uri/ /index.php?$query_string;
}