Is there a way to emulate Squid's redirector interface in reverse proxy

Yusuf Goolamabbas yusufg at gmail.com
Mon Jun 19 05:58:23 MSD 2006


The functionality I'm looking for is for nginx to call an external
process passing it the entire URI on its stdin, the external process
returns a complete URI on its stdout which nginx then uses to proxy
to.

e,g. nginx could send http://one.server.name/ to the external process
which could rewrite to to http://some.other.server.name/ and then
nginx would proxy the request to that server name. With the external
process approach, rewriting might be even done via db/memcached
lookups

with the squid redirector API, squid starts up a number of external
process as specified in the config file and multiplexes URL rewrites
amongst it.

I guess to some extent this might be similar to a fastcgi model in
terms of talking to an external process but instead of getting a
complete response back, nginx only has to expect a URI


On 6/16/06, Igor Sysoev <is at rambler-co.ru> wrote:
> On Fri, 16 Jun 2006, Aleksandar Lazic wrote:
>
> > On Fre 16.06.2006 14:09, Igor Sysoev wrote:
> >> On Fri, 16 Jun 2006, Yusuf Goolamabbas wrote:
> >>
> >>> Squid has a mechanism by which incoming URL's can be passed to an
> >>> external program to be rewritten and the reverse proxy subsequently
> >>> calls out to the rewritten URL
> >>>
> >>> http://wiki.squid-cache.org/SquidFaq/SquidRedirectors
> >>>
> >>> Is there a way to emulate this from within nginx
> >>
> >> No, nginx does not support such rewriting. What exact functionality do you
> >> need ?
> >
> > But how about with the perl-module?
>
> It's possible:
>
> ---------
> http {
>
>      perl_set  $new  '
>
>          sub {
>              my $r = shift;
>              my $uri = $r->uri;
>
>              return "/one/" if $uri =~ /1/;
>              return "/two/" if $uri =~ /2/;
>              return "/three/";
>          }
>
>      ';
>
>
>      server {
>          rewrite  ^  $new;
>
> ---------
>
> However, currently nginx could change URI only, it could not change
> the backend name.
>
>
> Igor Sysoev
> http://sysoev.ru/en/
>
>





More information about the nginx mailing list