web-dev-qa-db-ja.com

NginxサーバーでPUTファイルリクエストを許可するにはどうすればよいですか?

HTTPサーバー上のファイルをPUTする必要があるアプリケーションを使用しています。サーバーとして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を許可するには何をする必要がありますか?

手がかりは素晴らしいでしょう!

9
MFB

PUT、DELETE、MKCOL、COPY、MOVEなどのHTTPおよびWebDAVメソッドを追加するには、nginxをHttpDavModule./configure --with-http_dav_module)。小切手 nginx -Vまず、すでにHttpDavModuleを持っているかもしれません( Debianリポジトリからnginxをインストールし、モジュールをすでに持っています )。

次に、nginx-configを次のように変更します。

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

HttpDavModuleのnginx docsエントリ で詳細情報を取得できます。

21
fnkr

405 Not Allowedのもう1つの理由は、PUTingしている宛先にファイルを書き込む権限がないことです。 HttpDavModuleがあり、それでもこのエラーが発生する場合は、ファイルをPUTしている場所にnginx書き込み権限が付与されていることを確認してください。

2
Ali Hashemi