2013-06-04 31 views
6

Tôi đang sử dụng một ứng dụng cần PUT một tệp trên máy chủ HTTP. Tôi đang sử dụng Nginx làm máy chủ nhưng bị lỗi 405 Not Allowed. Dưới đây là một ví dụ về một thử nghiệm với cURL:Làm cách nào để cho phép yêu cầu tệp PUT trên máy chủ Nginx?

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

Và những gì tôi nhận được lại từ 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> 

gì tôi cần phải làm gì để cho phép PUT?

Mọi đầu mối sẽ tuyệt vời!

Trả lời

16

Để thêm các phương thức HTTP và WebDAV như PUT, DELETE, MKCOL, COPY và MOVE, bạn cần biên dịch nginx với HttpDavModule (./configure --with-http_dav_module). Trước hết, hãy kiểm tra nginx -V, có thể bạn đã có HttpDavModule (I installed nginx from the Debian repository and I already have the module).

Sau đó thay đổi nginx-config của bạn như thế:

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

Bạn có thể nhận được thông tin thêm về các nginx docs entry for the HttpDavModule.

+1

Điều gì sẽ xảy ra nếu tôi không cần tạo tệp, chỉ cần sử dụng thêm metthod HTTP? –

+1

Không hoạt động, '405 Không được phép' – Green

+0

Nếu bạn không muốn yêu cầu của mình được xử lý bởi dav_methods và muốn sử dụng phương pháp PUT hoặc DELETE, bạn nên đảm bảo các yêu cầu này không khớp với mô-đun chỉ mục, nhưng try_files tức là: try_files $ uri /index.php$is_args$args; trong trường hợp thiết lập điển hình với PHP – dadasign

1

Lý do khác cho 405 Not Allowed là bạn không có quyền ghi tệp trên đích bạn đang PUT ing. Nếu bạn có HttpDavModule và vẫn gặp phải lỗi này, hãy đảm bảo rằng bạn đã cấp cho nginx quyền ghi khi bạn đang PUT nhập các tệp.

Các vấn đề liên quan