Я настроил nginx как обратный прокси в мое приложение node.js для загрузки файлов с помощью директивы proxy_pass. Он работает, но моя проблема в том, что nginx ожидает, чтобы весь файл был загружен, прежде чем передать его в восходящий поток. Это вызывает проблемы для меня, потому что я хочу отслеживать процесс загрузки в моем приложении. Любая идея о том, как настроить nginx для того, чтобы передать тело файла в реальном времени в восходящий поток?
Загрузка nginx файлов с помощью proxy_pass
Ответ 1
Нет способа (по крайней мере, на данный момент). Полный запрос будет всегда буферизован до того, как nginx начнет отправлять его в восходящий поток. Чтобы отслеживать загруженные файлы, вы можете попробовать загрузить прогресс.
Обновление: в nginx 1.7.11 доступна директива proxy_request_buffering, которая позволяет отключить буферизацию тела запроса. Однако его следует использовать с осторожностью, см. Документы.
Ответ 2
Tengine (вилка от nginx) поддерживает небуферизованную загрузку, установив proxy_request_buffering на off.
http://tengine.taobao.org/document/http_core.html
Обновлено: в nginx 1.7.11 доступна директива proxy_request_buffering, так как @Максим Дунин, упомянутый выше
Ответ 3
Я подозреваю, что:
proxy_buffering off;
- это то, что вам нужно, см. http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering