How to direct traffic based on URL
Brad Fitzpatrick
brad at danga.com
Wed Sep 14 13:28:20 PDT 2005
I should've changed the error message. Replace in your head "configured
vhosts" with "configured service".
You need to make two services (named delicious and delicious_rss) of type
reverse_proxy, setup with all the fancy options you desire, and then have
delicious use pool, say, "pool_regular" and delcious_rss service use pool,
say, "pool_rss".
- Brad
On Wed, 14 Sep 2005, Max Michaels wrote:
> Hey Brad,
>
> Thanks again for your help. We here at del.icio.us owe ya one. So I've
> made a little progress and now the problem I'm running into is that
> when i request the pages. It is directing correctly to the vhosts, but
> it is saying that the vhosts aren't defined. I'm getting a 404 with the
> message "Not Found (no configured vhosts 'delicious')" or
> delicious_rss. I'm thinking that from looking at the example vhost
> config that vhosts aren't aware of Pools. Just a guess. My config is
> below. Thanks again for your help.
>
> oad DeliciousSelector
>
> CREATE POOL delicious_rss
> POOL delicious_rss ADD x.x.x.x6:80
>
> CREATE POOL delicious
> POOL delicious ADD y.y.y.y:80
>
> CREATE SERVICE balancer2
> SET listen = z.z.z.z:80
> SET role = selector
> SET plugins = DeliciousSelector
> ENABLE balancer2
>
>
> Thanks again,
>
> -max
> On Sep 13, 2005, at 1:54 PM, Brad Fitzpatrick wrote:
>
> > Well, the $host variable doesn't contain the URI request path, so it
> > won't
> > match the "/rss" in your VHOST directive.
> >
> > Here, use this:
> >
> > http://danga.com/temp/DeliciousSelector.pm
> >
> > Then load the plugin "DeliciousSelector" and remove your "VHOST" config
> > lines. I've hardcoded "delicious_rss" and "delicious" for your pool
> > names.
> >
> > - Brad
> >
> >
> >
> > On Tue, 13 Sep 2005, max michaels wrote:
> >
> >> Thanks for hints, but I'm still having problems getting adjustments
> >> to vhost.pm to work. Here's what I've change unsuccessfully:
> >>
> >> diff Perlbal-1.37.changes/lib/Perlbal/Plugin/Vhosts.pm
> >> Perlbal-1.37/lib/Perlbal/Plugin/Vhosts.pm
> >> 37c37
> >> < unless $host =~ /^[\/\w\-\_\.\*]+$/;
> >> ---
> >>> unless $host =~ /^[\w\-\_\.\*]+$/;
> >>
> >> and here is my perlbal.conf:
> >>
> >> load Vhosts
> >>
> >> CREATE POOL delicious_rss
> >> POOL delicious_rss ADD x.x.x.x:80
> >>
> >> CREATE POOL delicious
> >> POOL delicious ADD y.y.y.y:80
> >>
> >> CREATE SERVICE balancer2
> >> SET listen = 69.9.36.75:80
> >> SET role = selector
> >> SET plugins = vhosts
> >> VHOST del.icio.us/rss = delicious_rss
> >> VHOST del.icio.us = delicious
> >> ENABLE balancer2
> >>
> >>
> >> # always good to keep an internal management port open:
> >> CREATE SERVICE mgmt
> >> SET role = management
> >> SET listen = 127.0.0.1:60000
> >> ENABLE mgmt
> >>
> >> It still seems to randomly choose and not differentiate. Any Ideas?
> >>
> >> Thanks!
> >>
> >> -max
> >>
> >> On Sep 12, 2005, at 1:17 PM, Brad Fitzpatrick wrote:
> >>
> >>> You'll have to write a service selector plug-in, which isn't as
> >>> scary as
> >>> it sounds. Look at the Vhosts.pm plugin for virtual hosts (which
> >>> redirects to a different pool based on hostname), and change it to
> >>> work on
> >>> the URLs that you want.
> >>>
> >>> - Brad
> >>>
> >>>
> >>> On Mon, 12 Sep 2005, Max Michaels wrote:
> >>>
> >>>
> >>>> Howdy,
> >>>>
> >>>> I was just wondering if there is a good guide out there on how to
> >>>> redirect based upon what the URL is. For example, I want to direct
> >>>> any
> >>>> traffic that has /rss at the end of it to backend_server b and
> >>>> everything else to backend_server a. Thanks!
> >>>>
> >>>> -max
> >>>>
> >>>>
> >>>
> >>
> >>
>
>
More information about the perlbal
mailing list