2013-06-04 6 views
6

मैं एक ऐसे एप्लिकेशन का उपयोग कर रहा हूं जिसे HTTP सर्वर पर PUT फ़ाइल की आवश्यकता है। मैं सर्वर के रूप में Nginx का उपयोग कर रहा हूं लेकिन 405 Not Allowed त्रुटि वापस प्राप्त कर रहा हूं।मैं Nginx सर्वर पर PUT फ़ाइल अनुरोध की अनुमति कैसे दूं?

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

और क्या मैं Nginx से वापस पाने:: यहाँ cURL के साथ एक परीक्षण का एक उदाहरण है

<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 अनुमति देने के लिए क्या करने की जरूरत है?

कोई भी संकेत शानदार होगा!

उत्तर

16

HTTP और WebDAV विधियों जैसे PUT, DELETE, MKCOL, COPY और MOVE जोड़ने के लिए आपको HttpDavModule (./configure --with-http_dav_module) के साथ nginx संकलित करने की आवश्यकता है। पहले nginx -V देखें, शायद आपके पास पहले से ही HttpDavModule (I installed nginx from the Debian repository and I already have the module) है।

फिर उस तरह अपने nginx-config बदलने के लिए:

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

आप nginx docs entry for the HttpDavModule बारे में अधिक जानकारी प्राप्त कर सकते हैं।

+1

यदि मुझे अतिरिक्त HTTP मेटाथोड का उपयोग करने के लिए फ़ाइलों को बनाने की आवश्यकता नहीं है, तो क्या होगा? –

+1

काम नहीं करता है, '405 अनुमत नहीं है – Green

+0

यदि आप dav_methods द्वारा अपना अनुरोध नहीं करना चाहते हैं और PUT या DELETE विधियों का उपयोग करना चाहते हैं, तो आपको यह सुनिश्चित करना चाहिए कि ये अनुरोध इंडेक्स मॉड्यूल से मेल नहीं खाते हैं, लेकिन द्वारा try_files यानी: try_files $ uri /index.php$is_args$args; PHP के साथ एक सामान्य सेटअप के मामले में – dadasign

1

405 Not Allowed के लिए एक अन्य कारण यह है कि आपको उस गंतव्य पर फ़ाइलों को लिखने की अनुमति नहीं है, जहां आप PUT ing हैं। यदि आपके पास HttpDavModule है और अभी भी यह त्रुटि हो रही है, तो सुनिश्चित करें कि आपने nginx लेखन अनुमतियां दी हैं जहां आप PUT फ़ाइलों को आईएनजी कर रहे हैं।

संबंधित मुद्दे