2012-09-05 2 views
33

proxy_pass 지시어로 파일 업로드를 위해 node.js 응용 프로그램에 역방향 프록시로 nginx를 구성했습니다. 그것은 작동하지만 내 문제는 nginx가 업스트림으로 전달하기 전에 전체 파일 본문을 업로드 할 때까지 기다리는 것입니다. 내 응용 프로그램에서 업로드 진행 상황을 추적하고자하기 때문에 문제가 발생합니다. 업스트림에 실시간으로 파일 본문을 스트리밍하기 위해 nginx를 구성하는 방법에 대한 아이디어가 있습니까?nginx 파일은 proxy_pass로 스트리밍 업로드

proxy_buffering off; 

는 당신이 필요로 (적어도 지금과 같은) 할 수있는 방법이 없습니다 http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering

+0

위에서 언급? – Sreeraj

답변

26

볼 것입니다 :

+0

업로드 진행 모듈은 훌륭하지만로드 밸런싱 뒤에서 업로드 처리를 위해 여러 서버를 사용하기 때문에 일부로드 균형 조정 트릭을 사용하더라도 진행률 업데이트 요청이 다른 서버로 라우팅 될 가능성이 항상 있습니다. – bbbonthemoon

-3

나는 용의자. 전체 요청은 항상 nginx가 업스트림으로 보내기 전에 버퍼링됩니다. 업로드 된 파일을 추적하려면 upload progress 모듈을 사용해보십시오.

업데이트 : nginx 1.7.11에서 proxy_request_buffering 지시문을 사용할 수 있으며 요청 본문의 버퍼링을 비활성화 할 수 있습니다. 그것은 조심해서 사용해야합니다. 문서를보십시오.

+2

나는 그것을 시험해 보았다. 불행히도이 지시문은 응답 버퍼링 (설명 된대로)에 대해서만 작동하는 것 같습니다. – bbbonthemoon

+4

다음은 업로드 데이터의 직접 프록시 스트리밍을위한 nginx 티켓입니다. http://trac.nginx.org/nginx/ticket/251 잘하면 그들이 그것을 언젠가 구현할 것입니다. =/ – TekTimmy

5

Tengine (nginx의 포크)은 proxy_request_buffering을 off로 설정하여 버퍼링되지 않은 업로드를 지원합니다.

http://tengine.taobao.org/document/http_core.html

업데이트 :의 nginx proxy_request_buffering 지시어를 사용할 수 1.7.11에서, @Maxim Dounin 당신이에 대한 모든 솔루션을 받으셨어요

+0

proxy_request_buffering이 꺼져 있어도 요청은 여전히 ​​버퍼링됩니다. "Tengine은 proxy_request_buffering 또는 fastcgi_request_buffering을 해제하면 body가 client_body_postpone_size 이상의 데이터를 받거나 전체 요청 본문을 받으면 백엔드로 보냅니다." –

관련 문제