Is it possible that nginx will not buffer the client body?
Pasi Kärkkäinen
pasik at iki.fi
Fri Feb 22 09:25:24 UTC 2013
On Fri, Feb 22, 2013 at 10:06:11AM +0800, Weibin Yao wrote:
> Use the patch I attached in this mail thread instead, don't use the pull
> request patch which is for tengine.Â
> Thanks.
>
Oh sorry I missed that attachment. It seems to apply and build OK.
I'll start testing it.
Thanks!
-- Pasi
> 2013/2/22 Pasi KÀrkkÀinen <[1]pasik at iki.fi>
>
> On Fri, Jan 18, 2013 at 10:38:21AM +0200, Pasi KÀrkkÀinen wrote:
> > On Thu, Jan 17, 2013 at 11:15:58AM +0800, ?????? wrote:
> > > Â Â Yes. It should work for any request method.
> > >
> >
> > Great, thanks, I'll let you know how it works for me. Probably in two
> weeks or so.
> >
>
> Hi,
>
> Adding the tengine pull request 91 on top of nginx 1.2.7 doesn't work:
>
> cc1: warnings being treated as errors
> src/http/ngx_http_request_body.c: In function
> 'ngx_http_read_non_buffered_client_request_body':
> src/http/ngx_http_request_body.c:506: error: implicit declaration of
> function 'ngx_http_top_input_body_filter'
> make[1]: *** [objs/src/http/ngx_http_request_body.o] Error 1
> make[1]: Leaving directory `/root/src/nginx/nginx-1.2.7'
> make: *** [build] Error 2
>
> ngx_http_top_input_body_filter() cannot be found from any .c/.h files..
> Which other patches should I apply?
>
> Perhaps this?
> [2]https://github.com/cfsego/limit_upload_rate/blob/master/for-nginx.patch
>
> Thanks,
> -- Pasi
>
> >
> > > Â Â 2013/1/16 Pasi KÃ*â*¬rkkÃ*â*¬inen <[1][3]pasik at iki.fi>
> > >
> > > Â Â Â On Sun, Jan 13, 2013 at 08:22:17PM +0800, ?????? wrote:
> > > Â Â Â > Ã* Â Ã* This patch should work between nginx-1.2.6 and
> nginx-1.3.8.
> > > Â Â Â > Ã* Â Ã* The documentation is here:
> > >
> > > Â Â Â > Ã* Â Ã* ## client_body_postpone_sending ##
> > > Â Â Â > Ã* Â Ã* Syntax: **client_body_postpone_sending** `size`
> > > Â Â Â > Ã* Â Ã* Default: 64k
> > > Â Â Â > Ã* Â Ã* Context: `http, server, location`
> > > Â Â Â > Ã* Â Ã* If you specify the `proxy_request_buffering` or
> > > Â Â Â > Ã* Â Ã* `fastcgi_request_buffering` to be off, Nginx will
> send the body
> > > Â Â Â to backend
> > > Â Â Â > Ã* Â Ã* when it receives more than `size` data or the
> whole request body
> > > Â Â Â has been
> > > Â Â Â > Ã* Â Ã* received. It could save the connection and reduce
> the IO number
> > > Â Â Â with
> > > Â Â Â > Ã* Â Ã* backend.
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* ## proxy_request_buffering ##
> > > Â Â Â > Ã* Â Ã* Syntax: **proxy_request_buffering** `on | off`
> > > Â Â Â > Ã* Â Ã* Default: `on`
> > > Â Â Â > Ã* Â Ã* Context: `http, server, location`
> > > Â Â Â > Ã* Â Ã* Specify the request body will be buffered to the
> disk or not. If
> > > Â Â Â it's off,
> > > Â Â Â > Ã* Â Ã* the request body will be stored in memory and sent
> to backend
> > > Â Â Â after Nginx
> > > Â Â Â > Ã* Â Ã* receives more than `client_body_postpone_sending`
> data. It could
> > > Â Â Â save the
> > > Â Â Â > Ã* Â Ã* disk IO with large request body.
> > > Â Â Â >
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* Â Ã* Â Note that, if you specify it
> to be off, the nginx
> > > Â Â Â retry mechanism
> > > Â Â Â > Ã* Â Ã* with unsuccessful response will be broken after
> you sent part of
> > > Â Â Â the
> > > Â Â Â > Ã* Â Ã* request to backend. It will just return 500 when
> it encounters
> > > Â Â Â such
> > > Â Â Â > Ã* Â Ã* unsuccessful response. This directive also breaks
> these
> > > Â Â Â variables:
> > > Â Â Â > Ã* Â Ã* $request_body, $request_body_file. You should not
> use these
> > > Â Â Â variables any
> > > Â Â Â > Ã* Â Ã* more while their values are undefined.
> > > Â Â Â >
> > >
> > > Â Â Â Hello,
> > >
> > > Â Â Â This patch sounds exactly like what I need aswell!
> > > Â Â Â I assume it works for both POST and PUT requests?
> > >
> > > Â Â Â Thanks,
> > >
> > > Â Â Â -- Pasi
> > >
> > > Â Â Â > Ã* Â Ã* Â Ã* Hello!
> > > Â Â Â > Ã* Â Ã* Â Ã* @yaoweibin
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* If you are eager for this feature, you
> could try my
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* patch:
> [2][2][4]https://github.com/taobao/tengine/pull/91.
> > > Â Â Â This patch has
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* been running in our production servers.
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* Â Ã* what's the nginx version your patch based on?
> > > Â Â Â > Ã* Â Ã* Â Ã* Thanks!
> > > Â Â Â > Ã* Â Ã* Â Ã* On Fri, Jan 11, 2013 at 5:17 PM, Ã**Ã*
> Ã**Ã*°Ã*±Ã*³
> > > Â Â Â <[3][3][5]yaoweibin at gmail.com> wrote:
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* I know nginx team are working on it. You
> can wait for it.
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* If you are eager for this feature, you
> could try my
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* patch:
> [4][4][6]https://github.com/taobao/tengine/pull/91.
> > > Â Â Â This patch has
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* been running in our production servers.
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* 2013/1/11 li zJay
> <[5][5][7]zjay1987 at gmail.com>
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* Hello!
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* is it possible that nginx will not
> buffer the client
> > > Â Â Â body before
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* handle the request to upstream?
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* we want to use nginx as a reverse
> proxy to upload very
> > > Â Â Â very big file
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* to the upstream, but the default
> behavior of nginx is to
> > > Â Â Â save the
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* whole request to the local disk
> first before handle it
> > > Â Â Â to the
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* upstream, which make the upstream
> impossible to process
> > > Â Â Â the file on
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* the fly when the file is uploading,
> results in much high
> > > Â Â Â request
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* latency and server-side resource
> consumption.
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* Thanks!
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã*
> _______________________________________________
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* nginx mailing list
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã* [6][6][8]nginx at nginx.org
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Â Ã*
> [7][7][9]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* --
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Weibin Yao
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* Developer @ Server Platform Team of
> Taobao
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã*
> _______________________________________________
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* nginx mailing list
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã* [8][8][10]nginx at nginx.org
> > > Â Â Â > Ã* Â Ã* Â Ã* Â Ã*
> [9][9][11]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* Â Ã*
> _______________________________________________
> > > Â Â Â > Ã* Â Ã* Â Ã* nginx mailing list
> > > Â Â Â > Ã* Â Ã* Â Ã* [10][10][12]nginx at nginx.org
> > > Â Â Â > Ã* Â Ã* Â Ã*
> [11][11][13]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* --
> > > Â Â Â > Ã* Â Ã* Weibin Yao
> > > Â Â Â > Ã* Â Ã* Developer @ Server Platform Team of Taobao
> > > Â Â Â >
> > > Â Â Â > References
> > > Â Â Â >
> > > Â Â Â > Ã* Â Ã* Visible links
> > > Â Â Â > Ã* Â Ã* 1. mailto:[12][14]zjay1987 at gmail.com
> > > Â Â Â > Ã* Â Ã* 2.
> [13][15]https://github.com/taobao/tengine/pull/91
> > > Â Â Â > Ã* Â Ã* 3. mailto:[14][16]yaoweibin at gmail.com
> > > Â Â Â > Ã* Â Ã* 4.
> [15][17]https://github.com/taobao/tengine/pull/91
> > > Â Â Â > Ã* Â Ã* 5. mailto:[16][18]zjay1987 at gmail.com
> > > Â Â Â > Ã* Â Ã* 6. mailto:[17][19]nginx at nginx.org
> > > Â Â Â > Ã* Â Ã* 7.
> [18][20]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â Â Â > Ã* Â Ã* 8. mailto:[19][21]nginx at nginx.org
> > > Â Â Â > Ã* Â Ã* 9.
> [20][22]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â Â Â > Ã* Â 10. mailto:[21][23]nginx at nginx.org
> > > Â Â Â > Ã* Â 11.
> [22][24]http://mailman.nginx.org/mailman/listinfo/nginx
> > >
> > > Â Â Â > _______________________________________________
> > > Â Â Â > nginx mailing list
> > > Â Â Â > [23][25]nginx at nginx.org
> > > Â Â Â > [24][26]http://mailman.nginx.org/mailman/listinfo/nginx
> > >
> > > Â Â Â _______________________________________________
> > > Â Â Â nginx mailing list
> > > Â Â Â [25][27]nginx at nginx.org
> > > Â Â Â [26][28]http://mailman.nginx.org/mailman/listinfo/nginx
> > >
> > > Â Â --
> > > Â Â Weibin Yao
> > > Â Â Developer @ Server Platform Team of Taobao
> > >
> > > References
> > >
> > > Â Â Visible links
> > > Â Â 1. mailto:[29]pasik at iki.fi
> > > Â Â 2. [30]https://github.com/taobao/tengine/pull/91
> > > Â Â 3. mailto:[31]yaoweibin at gmail.com
> > > Â Â 4. [32]https://github.com/taobao/tengine/pull/91
> > > Â Â 5. mailto:[33]zjay1987 at gmail.com
> > > Â Â 6. mailto:[34]nginx at nginx.org
> > > Â Â 7. [35]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â Â 8. mailto:[36]nginx at nginx.org
> > > Â Â 9. [37]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â 10. mailto:[38]nginx at nginx.org
> > > Â 11. [39]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â 12. mailto:[40]zjay1987 at gmail.com
> > > Â 13. [41]https://github.com/taobao/tengine/pull/91
> > > Â 14. mailto:[42]yaoweibin at gmail.com
> > > Â 15. [43]https://github.com/taobao/tengine/pull/91
> > > Â 16. mailto:[44]zjay1987 at gmail.com
> > > Â 17. mailto:[45]nginx at nginx.org
> > > Â 18. [46]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â 19. mailto:[47]nginx at nginx.org
> > > Â 20. [48]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â 21. mailto:[49]nginx at nginx.org
> > > Â 22. [50]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â 23. mailto:[51]nginx at nginx.org
> > > Â 24. [52]http://mailman.nginx.org/mailman/listinfo/nginx
> > > Â 25. mailto:[53]nginx at nginx.org
> > > Â 26. [54]http://mailman.nginx.org/mailman/listinfo/nginx
> >
> > > _______________________________________________
> > > nginx mailing list
> > > [55]nginx at nginx.org
> > > [56]http://mailman.nginx.org/mailman/listinfo/nginx
> >
> > _______________________________________________
> > nginx mailing list
> > [57]nginx at nginx.org
> > [58]http://mailman.nginx.org/mailman/listinfo/nginx
>
> _______________________________________________
> nginx mailing list
> [59]nginx at nginx.org
> [60]http://mailman.nginx.org/mailman/listinfo/nginx
>
> --
> Weibin Yao
> Developer @ Server Platform Team of Taobao
>
> References
>
> Visible links
> 1. mailto:pasik at iki.fi
> 2. https://github.com/cfsego/limit_upload_rate/blob/master/for-nginx.patch
> 3. mailto:pasik at iki.fi
> 4. https://github.com/taobao/tengine/pull/91
> 5. mailto:yaoweibin at gmail.com
> 6. https://github.com/taobao/tengine/pull/91
> 7. mailto:zjay1987 at gmail.com
> 8. mailto:nginx at nginx.org
> 9. http://mailman.nginx.org/mailman/listinfo/nginx
> 10. mailto:nginx at nginx.org
> 11. http://mailman.nginx.org/mailman/listinfo/nginx
> 12. mailto:nginx at nginx.org
> 13. http://mailman.nginx.org/mailman/listinfo/nginx
> 14. mailto:zjay1987 at gmail.com
> 15. https://github.com/taobao/tengine/pull/91
> 16. mailto:yaoweibin at gmail.com
> 17. https://github.com/taobao/tengine/pull/91
> 18. mailto:zjay1987 at gmail.com
> 19. mailto:nginx at nginx.org
> 20. http://mailman.nginx.org/mailman/listinfo/nginx
> 21. mailto:nginx at nginx.org
> 22. http://mailman.nginx.org/mailman/listinfo/nginx
> 23. mailto:nginx at nginx.org
> 24. http://mailman.nginx.org/mailman/listinfo/nginx
> 25. mailto:nginx at nginx.org
> 26. http://mailman.nginx.org/mailman/listinfo/nginx
> 27. mailto:nginx at nginx.org
> 28. http://mailman.nginx.org/mailman/listinfo/nginx
> 29. mailto:pasik at iki.fi
> 30. https://github.com/taobao/tengine/pull/91
> 31. mailto:yaoweibin at gmail.com
> 32. https://github.com/taobao/tengine/pull/91
> 33. mailto:zjay1987 at gmail.com
> 34. mailto:nginx at nginx.org
> 35. http://mailman.nginx.org/mailman/listinfo/nginx
> 36. mailto:nginx at nginx.org
> 37. http://mailman.nginx.org/mailman/listinfo/nginx
> 38. mailto:nginx at nginx.org
> 39. http://mailman.nginx.org/mailman/listinfo/nginx
> 40. mailto:zjay1987 at gmail.com
> 41. https://github.com/taobao/tengine/pull/91
> 42. mailto:yaoweibin at gmail.com
> 43. https://github.com/taobao/tengine/pull/91
> 44. mailto:zjay1987 at gmail.com
> 45. mailto:nginx at nginx.org
> 46. http://mailman.nginx.org/mailman/listinfo/nginx
> 47. mailto:nginx at nginx.org
> 48. http://mailman.nginx.org/mailman/listinfo/nginx
> 49. mailto:nginx at nginx.org
> 50. http://mailman.nginx.org/mailman/listinfo/nginx
> 51. mailto:nginx at nginx.org
> 52. http://mailman.nginx.org/mailman/listinfo/nginx
> 53. mailto:nginx at nginx.org
> 54. http://mailman.nginx.org/mailman/listinfo/nginx
> 55. mailto:nginx at nginx.org
> 56. http://mailman.nginx.org/mailman/listinfo/nginx
> 57. mailto:nginx at nginx.org
> 58. http://mailman.nginx.org/mailman/listinfo/nginx
> 59. mailto:nginx at nginx.org
> 60. http://mailman.nginx.org/mailman/listinfo/nginx
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
More information about the nginx
mailing list