Trouble getting the Request Body of a HTTP Post

Tronman nginx-forum at
Fri Dec 18 16:32:52 MSK 2009

Nick Pearson Wrote:
> curl is a good way to test URLs without having to
> re-type everything
> each time.  You can POST by using the -d or -f
> option.  Much better
> than telnet for this type of testing, in my
> experience.

Yes, I've heard of cURL but hadn't used it a whole lot. I've installed it and will give it a try, thanks!

Maxim Dounin Wrote:
> You should use ->bufs.  Here is the comment from 
> ngx_http_request_body.c which should be helpful:
> /*
>  * on completion
> ngx_http_read_client_request_body() adds to
>  * r->request_body->bufs one or two bufs:
>  *    *) one memory buf that was preread in
> r->header_in;
>  *    *) one memory or file buf that contains the
> rest of the body
>  */
> Simple example of using request_body may be found
> in 
> ngx_http_variables.c, in function 
> ngx_http_variable_request_body().

Ah, I was looking for something like that. Thanks!

> > So if I specify "client_body_in_single_buffer"
> as "true", does 
> > it store the entire client request in
> r->request_body->buf?
> No.  It will be in first buffer of
> r->request_body->bufs, either 
> in memory if it fits into client_body_buffer_size
> or in file.
> > But if not, does it separate the client request
> body into the 
> > chunks of whatever client_body_buffer_size is
> set to, and then 
> > you use the chain to gain access to the entire
> thing?
> Not exactly.  Currently r->request_body->bufs will
> contain up to two 
> buffers: one for data preread with headers, and
> one for data got 
> later.  If there are more data than
> client_body_buffer_size - the 
> last buffer will be in temporary file.
> It's probably a good idea to spend some time
> reading 
> ngx_http_request_body.c for better clue what
> happens in various 
> cases.

> Maxim Dounin

Gotcha. I think I'm getting a handle on what's going on. Thanks again for all your help!

Posted at Nginx Forum:,31312,31612#msg-31612

More information about the nginx mailing list