Forum: NGINX echo_location Not Working

Posted by adamchal (Guest)
on 2012-09-26 19:03
(Received via mailing list)
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: 
http://forum.nginx.org/read.php?2,231107,231107#msg-231107
Posted by Christoph Schug (Guest)
on 2012-09-27 09:29
(Received via mailing list)
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.com' http://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

<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.3.6</center>
</body>
</html>
world
took 1.001 sec for total.

Without the "GET":

$ curl -s -o - -D - -H 'Host: t17.example.com' http://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?
Posted by adamchal (Guest)
on 2012-09-27 13:41
(Received via mailing list)
I'm an idiot, it's because I didn't have the SSI module compiled in.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,231107,231141#msg-231141
Posted by agentzh (Guest)
on 2012-09-27 20:02
(Received via mailing list)
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 ;) 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
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.