2013-06-04 19 views
6

PUT HTTP sunucusundaki bir dosyaya ihtiyaç duyan bir uygulama kullanıyorum. Nginx'i sunucu olarak kullanıyorum ama 405 Not Allowed hatası alıyorum.Nginx sunucusunda bir PUT dosya isteğine nasıl izin verebilirim?

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

Ve ne Nginx geri almak: Burada cURL'den ile bir test örneğidir

Ben PUT izin yapmam gerekiyor ne
<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> 

?

Herhangi bir ipucu harika olurdu!

cevap

16

PUT, DELETE, MKCOL, COPY ve MOVE gibi HTTP ve WebDAV yöntemlerini eklemek için nginx'i HttpDavModule (./configure --with-http_dav_module) ile derlemeniz gerekir. Önce nginx -V'u kontrol edin, belki de HttpDavModule (I installed nginx from the Debian repository and I already have the module) 'a sahipsiniz.

Sonra bu gibi nginx-config değiştirin:

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

Sen nginx docs entry for the HttpDavModule daha fazla bilgi üzerinde olabilir.

+1

Dosya oluşturmaya ihtiyacım yoksa, ek HTTP metthods kullanmak için ne yapmalıyım? –

+1

Çalışmıyor, '405 İzin verilmiyor ' – Green

+0

İsteğiniz dav_methods tarafından ele almak istemiyorsanız ve PUT veya DELETE yöntemlerini kullanmak istemiyorsanız, bu isteklerin indeks modülü tarafından eşleşmediğinden emin olmalısınız. try_files yani: try_files $ uri/index.php$is_args$args; PHP ile tipik bir kurulum durumunda – dadasign

1

405 Not Allowed için başka bir neden de, PUT ing adresinde istediğiniz yere dosya yazma izniniz yok. HttpDavModule varsa ve yine de bu hatayı alıyorsanız, dosyaları PUT yüklediğinizde nginx yazma izinleri verdiğinizden emin olun.