Echo_location Not Working

Anybody having issues with the echo_location (and echo_location_async)
directive? I have tried to get this to work with v1.1.18 and v1.3.6,
and
they both exhibit the same behavior. Basically, only the output from
the
/main block is echo’d out.

My nginx config (basically a copy-and-paste) from the echo module’s
documentation:

location /main {
    echo_reset_timer;
    echo_location_async GET /sub1;
    echo_location /sub2;
    echo "took $echo_timer_elapsed sec for total.";
}
location /sub1 {
    echo_sleep 2;
    echo hello;
}
location /sub2 {
    echo_sleep 1;
    echo world;
}

curl -D /dev/stdout http://localhost/main

HTTP/1.1 200 OK
Server: nginx/1.3.6
Date: Wed, 26 Sep 2012 16:37:37 GMT
Content-Type: text/plain
Transfer-Encoding: chunked
Connection: keep-alive

took 1.002 sec for total.

Posted at Nginx Forum:

On 2012-09-26 19:03, adamchal wrote:

location /sub2 {

Transfer-Encoding: chunked
Connection: keep-alive

took 1.002 sec for total.

Hmm, works for me as expected after removing the “GET” at
“echo_location_async”, using Nginx 1.3.6 and
agentzh-echo-nginx-module-d3eb42d (version 0.41). But even with the
“GET” which will fail the /sub1 subrequest (status 404), you should
still see the output of the 404 page (as a result of the /sub1
subrequest), the output of /sub2 plus the one of /main.

With the “GET”:

$ curl -s -o - -D - -H ‘Host: t17.example.comhttp://127.0.0.1/main
HTTP/1.1 200 OK
Server: nginx/1.3.6
Date: Thu, 27 Sep 2012 07:16:24 GMT
Content-Type: application/octet-stream
Transfer-Encoding: chunked
Connection: keep-alive

404 Not Found

404 Not Found


nginx/1.3.6 world took 1.001 sec for total.

Without the “GET”:

$ curl -s -o - -D - -H ‘Host: t17.example.comhttp://127.0.0.1/main
HTTP/1.1 200 OK
Server: nginx/1.3.6
Date: Thu, 27 Sep 2012 07:16:43 GMT
Content-Type: application/octet-stream
Transfer-Encoding: chunked
Connection: keep-alive

hello
world
took 1.001 sec for total.

Which version of the echo module are you using? Debug logs?

I’m an idiot, it’s because I didn’t have the SSI module compiled in.

Posted at Nginx Forum:

Hello!

On Wed, Sep 26, 2012 at 10:03 AM, adamchal wrote:

    echo_location_async GET /sub1;

I think you really mean “echo_subrequest_async” here? The
echo_location_async directive does not take a request method as its
first argument, so the “GET” argument above will be interpreted as the
subrequest URI (and “/sub1” will be taken as the querystring), which
is surely not what you want :wink: See the documentation for details:

http://wiki.nginx.org/HttpEchoModule#echo_location_async

And also

http://wiki.nginx.org/HttpEchoModule#echo_subrequest_async

Best regards,
-agentzh