15 Stimmen

Wie erlaube ich einen PUT-Datei-Anfrage auf einem Nginx-Server?

Ich benutze eine Anwendung, die eine Datei auf einem HTTP-Server PUT benötigt. Ich verwende Nginx als Server, erhalte jedoch einen 405 Not Allowed Fehler zurück. Hier ist ein Beispiel für einen Test mit cURL:

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

Und was ich von Nginx zurückbekomme:

405 Not Allowed

405 Not Allowed
nginx/1.1.19

Was muss ich tun, um das PUT zu erlauben?

Über jegliche Hinweise wäre ich dankbar!

27voto

fnkr Punkte 8118

Um HTTP und WebDAV-Methoden wie PUT, DELETE, MKCOL, COPY und MOVE hinzuzufügen, müssen Sie nginx mit HttpDavModule kompilieren (./configure --with-http_dav_module). Überprüfen Sie zuerst nginx -V, vielleicht haben Sie bereits das HttpDavModule (Ich habe nginx aus dem Debian-Repository installiert und ich habe bereits das Modul).

Ändern Sie dann Ihre nginx-Konfiguration wie folgt:

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

Weitere Informationen zum nginx-Dokumenteneintrag für das HttpDavModule finden Sie hier.

1voto

Ali Hashemi Punkte 2815

Ein weiterer Grund für 405 Not Allowed ist, dass Sie keine Berechtigung zum Schreiben von Dateien auf dem Ziel haben, auf das Sie ein PUT durchführen. Wenn Sie das Modul HttpDavModule verwenden und dennoch diesen Fehler erhalten, stellen Sie sicher, dass Sie nginx Schreibberechtigungen an dem Ort gegeben haben, an dem Sie die Dateien PUTen.

0voto

egekhter Punkte 1999

Durch das Hinzufügen dieses Blocks wurde das Problem für mich in einer Laravel-Anwendung gelöst.

location / {
     try_files $uri $uri/ /index.php?$query_string;
}

0voto

LittleEaster Punkte 509

Nginx ist hauptsächlich ein Proxy und vieles andere, es teilt etwas mit dem Webserver, aber nicht alles.

Sie können gerne überprüfen: https://www.nginx.com/resources/wiki/modules/upload/, besser ist es, eine REST-Schnittstelle zu haben und Nginx den Proxy, das Balancing, das Puffern, TSL usw. machen zu lassen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X