7 messages in ru.sysoev.nginxRe: Is there a way to emulate Squid's...
FromSent OnAttachments
Yusuf GoolamabbasJun 15, 2006 11:35 pm 
Igor SysoevJun 16, 2006 3:09 am 
Aleksandar LazicJun 16, 2006 6:28 am 
Igor SysoevJun 16, 2006 6:40 am 
Yusuf GoolamabbasJun 18, 2006 6:58 pm 
Yusuf GoolamabbasApr 12, 2009 6:14 pm 
Eden LiApr 13, 2009 8:51 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: Is there a way to emulate Squid's redirector interface in reverse proxyActions...
From:Yusuf Goolamabbas (yusu@public.gmane.org)
Date:Jun 18, 2006 6:58:00 pm
List:ru.sysoev.nginx

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-G@public.gmane.org> 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.