Is there a way to emulate Squid's redirector interface in reverse proxy
Yusuf Goolamabbas
yusufg at gmail.com
Mon Apr 13 05:14:46 MSD 2009
Somewhat bad responding to a very old post of mine
Lighttpd's x-rewrite functionality is what fits the bill here
http://blog.lighttpd.net/articles/2006/07/22/x-sendfiles-new-friend-x-rewrite
On Mon, Jun 19, 2006 at 9:58 AM, Yusuf Goolamabbas <yusufg at gmail.com> wrote:
> 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