2013-06-04 16 views
6

Używam aplikacji, która potrzebuje PUT pliku na serwerze HTTP. Używam Nginx jako serwera, ale otrzymuję z powrotem błąd 405 Not Allowed. Oto przykład testu z dyni:Jak mogę zezwolić na żądanie pliku PUT na serwerze Nginx?

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

I co mam wracać z 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> 

Co muszę zrobić, aby umożliwić PUT?

Wszelkie wskazówki będą niesamowite!

Odpowiedz

16

Aby dodać metody HTTP i WebDAV, takie jak PUT, DELETE, MKCOL, COPY i MOVE, musisz skompilować plik nginx z HttpDavModule (./configure --with-http_dav_module). Najpierw sprawdź nginx -V, może masz już HttpDavModule (I installed nginx from the Debian repository and I already have the module).

Następnie zmienić nginx-config tak:

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

można uzyskać więcej informacji na temat nginx docs entry for the HttpDavModule.

+1

Co zrobić, jeśli nie potrzebuję tworzyć plików, tylko po to, aby skorzystać z dodatkowych metod odczytywania protokołu HTTP? –

+1

Nie działa, '405 Niedozwolone' – Green

+0

Jeśli nie chcesz, aby twoje żądanie było obsługiwane przez dav_methods i chcesz używać metod PUT lub DELETE, upewnij się, że te żądania nie są dopasowane przez moduł indeksu, ale przez try_files, tj: try_files $ uri /index.php$is_args$args; w przypadku typowej konfiguracji z PHP – dadasign

1

Kolejny powód 405 Not Allowed polega na tym, że nie masz uprawnień do zapisu plików w miejscu docelowym, w którym jesteś PUT. Jeśli masz HttpDavModule i wciąż otrzymujesz ten błąd, upewnij się, że masz prawa do zapisu nginx, gdzie jesteś PUT.

Powiązane problemy