Issue with 3rd-party memc and eval modules

Markus Jelsma markus at buyways.nl
Wed Feb 24 16:52:00 MSK 2010


Yes, i can provide a snippet. In the end i have decided to abandon the project 
of doing it in configuration. It is extremely hard to try and write imperative 
code in a declarative language; although we do have the if operator [1], 
working with it is more troublesome than ever before ;)

We will now try and build a module for our purpose, at least, i hope so.

Anyway, here is a snippet to reproduce a non -closing connection using eval in 
a named location called by echo_exec - it gets complicated indeed.


    location /test
    {
      echo_exec @initialize;
    }

    location @initialize
    {
      eval_override_content_type 'text/plain';

      eval $id
      {
        rewrite ^(.*)$ /id;
        proxy_pass http://data-1:8080;
      }
    }

This will fail and also fail with a memc_pass call. However, it will work if 
you replace the echo_exec call with the entire contents of the named location.

Even this little piece of code gave me a hard time; imagine how some 50 lines 
using various eval blocks, proxy_pass and memc_pass directives and many evil 
if operators ;)

Anyway, thanks for all the support on the way!


[1]: http://wiki.nginx.org/IfIsEvil


Regards,


On Wednesday 24 February 2010 05:26:04 agentzh wrote:
>  tested a bit further and the both agentzh and Valery's module do not
> 
> > close the connection inside an interal location called by echo_subrequ
> 

Markus Jelsma - Technisch Architect - Buyways BV
http://www.linkedin.com/in/markus17
050-8536620 / 06-50258350




More information about the nginx mailing list