Question on Empty GIF module

Denis F. Latypoff denis at gostats.ru
Thu Apr 24 08:52:35 MSD 2008


Hello Rt,

Thursday, April 24, 2008, 11:37:51 AM, you wrote:

> Is it possible to use the empty GIF module to return the 1x1 pixel to the
> client, BUT then to also pass the request along to an upsteam server so that
> the query string data on the request can be processed?  

> Here is the quick background on what I am trying to do...

> I have a tiny web app that listens for web requests for a certain .gif file.
> Requests hit the web app like this
> "http://webappurl.com/dummy.gif?data1=xyz&data2=abc". 
> My web app then immediately returns a dummy gif of its own and closes the
> connection. Then it proceeds to do (non-web) operations in the background
> based on the query string data. 

> For performance reasons it would be FAR more efficient (at least from the
> browser's perspective) if nginx could return the 1x1 pixel instead of my app,
> but then still pass the request onto my app server so it can process the query
> string data.  I guess another way of asking is whether nginx would work as I
> would like if I used it like this:    

> location / {
>    empty_gif;
>    proxy_pass http://my_upstream_servers;
> }

> So in the above case, would it still pass the request on to my upstream
> servers? Or would the empty_gif statement essentially end the nginx processing
> at that point?  

> If the above would work as I hope it would, then I could even modify my app so
> that instead of returning a gif it just closed the connection. This is because
> empty_gif would already have satisfied the browser request, so there would be
> no point in bothering to return a gif from my app as well because it would
> just get dropped on the floor.  But I'm not sure if just closing the
> connection from my app like that would then cause nginx to think the upstream
> was down or broken and take it off line, so maybe I still have to return the
> gif?       

> Thanks in advance!


location = /dummy.gif {
    proxy_pass http://backend;
}

location = /empty.gif {
    internal;
    empty_gif;
}

in the backend app just add 'X-Accel-Redirect: /empty.gif' to the header set and
then close connection and then "proceed to do (non-web) operations in the
background based on the query string data."

but there is one issue: Set-Cookie header from app will be passed by nginx to
the client, but P3P header wont. I recently noted it:
http://www.lexa.ru/nginx-ru/msg17278.html 

>       ____________________________________________________________________________________
> Be a better friend, newshound, and 
> know-it-all with Yahoo! Mobile.  Try it now.  http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ


-- 
Best regards,
 Denis                            mailto:denis at gostats.ru






More information about the nginx mailing list