nginx 1.5+ bestandsupload — best practices

Ik wil bestanden uploaden via mijn nginx-server. Ik gebruik momenteel nginx-1.4.6en ben bereid indien nodig over te stappen naar de nieuwste stabiele nginx-1.5*.

De favoriet van de community is/was Valery Kholodkov’s nginx-upload-module, gevonden hier. Helaas onderhoudt Valery deze module niet langer, details hier. Vanaf nginx-1.3.9werkt de module gedeeltelijk of helemaal niet.

Ik heb de nginx-upload-modulegecompileerd in nginx-1.4.6en krijg een bug (Client cxn gesloten) die lijkt te zijn opgelost in de nginx-1.5.3wijzigingsset. Ik heb de patch echter toegepast en had geen geluk.

Anatoly’s enigszins gedateerde post, hier, biedt meerdere oplossingen, inclusief vier oplossingen

Terwijl ik in de tweede en vierde oplossing duik (ik maak liever geen afhankelijkheid van lua, maar dat zou kunnen), bedacht ik dat het gepast was om deze gemeenschap te vragen:

Wat zijn de huidige praktische tips voor het uploaden van bestanden met nginx-1.5+?

Laat me toevoegen dat ik bestanden upload van een pythonPOST-opdracht en probeer te testen met curl. PHPstaat niet op mijn technische stapel.


Antwoord 1, autoriteit 100%

Misschien kun je perl gebruiken als je niet van php of lua houdt.

http://nginx.org/en/docs/http/ngx_http_perl_module. html#methoden

$r->has_request_body(handler)

Maar standaard is nginx niet de tool om een ​​ontvangen postverzoek op te slaan en op te slaan.

Misschien uWSGI ( https://uwsgi-docs.readthedocs.io/en/latest/ ) is een betere manier om te gaan met http-socket https:// uwsgi-docs.readthedocs.io/en/latest/HTTP.htmlen een python-app.


Antwoord 2

Er is een goed artikel over je twijfel. https://coderwall.com/p/swgfvw

Ik heb nginx-upload-module geprobeerd. Het is een goede oplossing, maar het lijkt erop dat dit niet werkt voor nieuwe versies.
Er zijn ook enkele modules in Lua die je kunnen helpen. In mijn geval had ik bedrijfslogica die ik vervolgens in mijn app implementeerde.

Houd er rekening mee dat het grote probleem voor het uploaden van bestanden de FILER is. Dit is een knelpunt: veel belastingtests die ik had gemaakt, lieten me deze conclusie zien.


Antwoord 3

Nginx ondersteunt de ‘POST’-methode, waar je grote parameters kunt gebruiken. De client kan php of jsp gebruiken om de post-methode te gebruiken om het verzoek naar de nginx-server te bouwen.


Antwoord 4

Ik realiseer me dat dit een heel oude vraag is, maar het staat op de eerste pagina van Google Zoeken naar “nginx uploadmodule” en het is het eerste Stack Overflow-resultaat, dus voor het geval dit iemand anders helpt die deze vraag tegenkomt:

p>

Ik gebruik de nginx-upload-module op nginx 1.10.3. Zoals de oorspronkelijke vraag vermeldt, onderhoudt Valery Kholodkov de module niet langer. Er zijn echter verschillende vorken en andere mensen hebben deze aangepast om met nieuwere nginx-versies te werken.

Dit pull-verzoek heb ik gebruikt om nginx te compileren met de uploadmodule.

https://github.com/vkholodkov/nginx-upload-module / Trek / 88

De uploadmodule, IMO, is er nog steeds de beste oplossing als u NGINX en PHP-FPM gebruikt. Met deze module kunnen uploads volledig worden behandeld door NGINX totdat ze compleet zijn, en dan wordt de taak van verwerking van het upload doorgegeven op PHP. Dus PHP-FPM-processen maken geen knelpunt wanneer uw gebruikers veel bestanden uploaden.

Other episodes