[ANN] ngx_echo v0.35: ability to POST/PUT local files as subrequest bodies

agentzh agentzh at gmail.com
Wed Mar 16 05:28:39 MSK 2011


On Wed, Mar 16, 2011 at 6:15 AM, Alexander Kunz <akunz at ntmedia.de> wrote:
>
> Hello,
>
> any chance to debug the -f function? I use the debug log, but get no
> information about the file... /body1
> shows me "test" but /body2 shows nothing... no error, no body content...
>

Because there's no error in your /body2 request, no log is expected to
be printed ;)

>      location /body1 {
>            echo_subrequest POST /sub -b 'test';
>        }
>
>      location /body2 {
>            echo_subrequest POST /sub -f /tmp/hello.txt;
>        }
>
>        location /sub {
>            echo "body: $echo_request_body";
>        }

Why $echo_request_body is empty for /body2? Because "echo_subrequest
/sub -f /tmp/hello.txt" produces a request body that consists of
*file* buffers only (such that nginx does not bother reading the whole
disk file into RAM at once) and $echo_request_body only respects pure
*memory* buffers.

The following example comes from the ngx_echo's test suite:

    location /main {
        echo_subrequest POST /sub -f html/blah.txt;
    }

    location /sub {
        echo "sub method: $echo_request_method";
        # we don't need to call echo_read_client_body explicitly here
        echo_request_body;
    }

where html/blah.txt contains the following contents:

    Hello, world

Then GET /main gives

    sub method: POST
    Hello, world

Cheers,
-agentzh



More information about the nginx mailing list