Tôi đã định cấu hình nginx làm proxy ngược lại cho ứng dụng node.js của tôi để tải tệp lên bằng chỉ thị proxy_pass. Nó hoạt động, nhưng vấn đề của tôi là nginx đợi toàn bộ tập tin được tải lên trước khi chuyển nó lên thượng lưu. Điều này gây ra vấn đề cho tôi, bởi vì tôi muốn theo dõi tiến trình tải lên tại ứng dụng của tôi. Bất kỳ ý tưởng làm thế nào để cấu hình nginx để dòng cơ thể tập tin trong thời gian thực đến thượng nguồn?các tệp nginx tải lên trực tuyến bằng proxy_pass
Trả lời
Không có cách nào để (ít nhất là bây giờ). Yêu cầu đầy đủ sẽ luôn được đệm trước khi nginx bắt đầu gửi nó lên thượng nguồn. Để theo dõi các tệp đã tải lên, bạn có thể thử mô-đun upload progress.
Cập nhật: trong nginx 1.7.11 chỉ thị proxy_request_buffering có sẵn, cho phép vô hiệu hóa bộ đệm của phần thân yêu cầu. Nó nên được sử dụng cẩn thận, xem tài liệu.
mô-đun tiến trình tải lên rất tuyệt, nhưng chúng tôi đang sử dụng một số máy chủ để tải lên xử lý sau khi cân bằng tải, vì vậy luôn có cơ hội yêu cầu cập nhật tiến trình sẽ được chuyển đến máy chủ khác (ngay cả với một số thủ thuật cân bằng tải). – bbbonthemoon
Tôi nghi ngờ rằng:
proxy_buffering off;
là những gì bạn cần, xem http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering
Tôi đã thử điều đó. Thật không may có vẻ như chỉ thị này chỉ hoạt động cho phản hồi đệm (giống như mô tả) – bbbonthemoon
Đây là một vé nginx cho proxy trực tiếp streaming của dữ liệu tải lên http://trac.nginx.org/nginx/ticket/251 hy vọng họ sẽ thực hiện nó đôi khi =/ – TekTimmy
Tengine (một ngã ba từ nginx) hỗ trợ tải lên không được cấp phép bằng cách đặt proxy_request_buffering thành tắt.
http://tengine.taobao.org/document/http_core.html
Cập nhật: trong nginx 1.7.11 chỉ thị proxy_request_buffering có sẵn, như đề cập ở trên @Maxim Dounin
Ngay cả khi proxy_request_buffering bị tắt, yêu cầu vẫn được lưu vào bộ đệm. từ doc: "Khi bạn tắt proxy_request_buffering hoặc fastcgi_request_buffering, Tengine sẽ gửi phần thân tới backend hoặc nó nhận được nhiều hơn dữ liệu client_body_postpone_size hoặc toàn bộ phần thân yêu cầu đã được nhận." –
- 1. cách tải lên tệp bằng cách sử dụng tải lên tệp commons trực tuyến api
- 2. Tải lên tệp trực tuyến bằng cách sử dụng chai (hoặc bình hoặc tương tự)
- 3. Cấu hình Nginx với proxy_pass
- 4. Tải tệp trực tiếp lên S3 bằng thanh tiến trình
- 5. tải lên tệp bằng FTP bằng nant
- 6. Nginx không tải được các tệp css
- 7. Tải lên tệp trong các ứng dụng HTML5 ngoại tuyến
- 8. Tải lên tệp bằng Backbone
- 9. Tải lên tệp bằng Sinatra
- 10. Tải lên tệp bằng Tornado
- 11. Tải lên tệp bằng RichFaces
- 12. Tải lên tệp bằng boto
- 13. Tải tệp lên bằng extjs4
- 14. Trang web tải WebView khi trực tuyến, tải tệp cục bộ khi ngoại tuyến
- 15. Tệp MP3 trực tuyến MVC3
- 16. Tải lên lại bằng API tải lên tệp HTML5 -
- 17. Nginx proxy_pass dựa trên tham số POST/GET/PUT/DELETE
- 18. nhiều ứng dụng django với nginx proxy_pass và viết lại
- 19. Tải lên các tệp lớn trong .NET
- 20. nginx proxy_pass đơn giản với localhost không làm việc
- 21. tải lên tệp bằng EXT JS
- 22. Tải lên tệp POST bằng URLRequest
- 23. Tải tệp lên bằng jQuery Ajax
- 24. Nginx Cân bằng tải lưu lượng cao
- 25. cách tải xuống video trực tuyến jwplayer?
- 26. Tải tệp thô lên Rails bằng Carrierwave
- 27. Tải tệp lên S3 bằng AWS SDK
- 28. Tải lên hai tệp bằng PHP
- 29. Tải lên nhiều tệp bằng http POST
- 30. Tải tệp lên bằng parseRequest của ServletFileUpload?
Bạn đã nhận được bất kỳ giải pháp cho việc này? – Sreeraj