Ho configurato nginx come proxy inverso sulla mia applicazione node.js per upload di file con direttiva proxy_pass. Funziona, ma il mio problema è che nginx aspetta che l'intero corpo del file venga caricato prima di passarlo all'upstream. Questo mi crea problemi, perché voglio tenere traccia dell'avanzamento del caricamento sulla mia applicazione. Qualche idea su come configurare nginx per lo streaming del corpo del file in tempo reale fino al monte?file nginx upload streaming con proxy_pass
risposta
Non v'è alcun modo per (almeno fin d'ora). La richiesta completa sarà sempre memorizzata nel buffer prima che nginx inizi a inviarlo a monte. Per tracciare i file caricati puoi provare il modulo upload progress.
Aggiornamento: in nginx 1.7.11 è disponibile la direttiva proxy_request_buffering che consente di disabilitare il buffering di un corpo di richiesta. Dovrebbe essere usato con cura però, vedi i documenti.
Il modulo di avanzamento del caricamento è ottimo, ma stiamo utilizzando diversi server per l'elaborazione dei caricamenti dopo il bilanciamento del carico, quindi c'è sempre la possibilità che la richiesta di aggiornamento del progresso venga instradata su un altro server (anche con alcuni trucchi del bilanciamento del carico). – bbbonthemoon
Ho il sospetto che:
proxy_buffering off;
è quello che ti serve, vedi http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering
L'ho provato. Purtroppo sembra che questa direttiva funzioni solo per il buffering delle risposte (proprio come descritto) – bbbonthemoon
Ecco un ticket nginx per lo streaming diretto del proxy dei dati di caricamento http://trac.nginx.org/nginx/ticket/251 speriamo che lo implementeranno qualche volta =/ – TekTimmy
Tengine (un fork da nginx) supporta il caricamento unbuffered impostando proxy_request_buffering su off.
http://tengine.taobao.org/document/http_core.html
Aggiornato: nel nginx 1.7.11 direttiva proxy_request_buffering è disponibile, come accennato sopra @Maxim Dounin
Anche se proxy_request_buffering è disattivato, la richiesta è ancora memorizzata nel buffer. dal doc: "Quando si disattiva il proxy_request_buffering o fastcgi_request_buffering, Tengine invierà il corpo al backend o riceverà più di client_body_postpone_size dati o l'intero corpo della richiesta è stato ricevuto." –
- 1. Nginx proxy_pass con $ remote_addr
- 2. Nginx proxy_pass senza parametri
- 3. Proxy_pass dinamico a $ var con nginx 1.0
- 4. nginx upload client_max_body_size issue
- 5. nginx proxy_pass 404 errore, non capisco perché
- 6. Differenza tra uwsgi_pass e proxy_pass in Nginx?
- 7. più app django con nginx proxy_pass e riscrivi
- 8. Nginx per posizione/pass rewriten uri a proxy_pass
- 9. Dynamic proxy_pass in nginx in un altro pod in Kubernetes
- 10. PHP upload S3 upload
- 11. Implementare upload di directory con jQuery File Upload and Rails
- 12. Serve file statici con Nginx + Gunicorn + Django
- 13. proxy_pass dinamico con mappa e espressione regolare
- 14. jQuery auto upload file
- 15. django/file upload permessi
- 16. upload di file con l'uva e graffetta
- 17. Problema con nosetests e upload di file
- 18. Autorizzazione file con classe upload di CodeIgniter
- 19. Test davvero lento con upload di file
- 20. Streaming di file con cherrypy
- 21. Gestisci sottodominio Express con nginx
- 22. upload file wcf
- 23. Retrofit 2 file down/upload
- 24. file statici Recuperare fallito con 404 in nginx
- 25. Apache commons alternative di upload di file
- 26. upload di file Carrierwave con diversi tipi di file
- 27. Howto: Drupal File Upload Form
- 28. Upload di upload di file Blueimp caricati solo una volta
- 29. Spring MVC File Upload Aiuto
- 30. flow.js upload file on click
Hai avuto alcuna soluzione per questo? – Sreeraj