|
Home > Archive > Perlbal > September 2005 > How to direct traffic based on URL
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
How to direct traffic based on URL
|
|
| Max Michaels 2005-09-12, 5:50 pm |
| 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
| |
| Brad Fitzpatrick 2005-09-12, 5:50 pm |
| 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
>
>
| |
| Brad Fitzpatrick 2005-09-13, 5:50 pm |
| 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\-\_\.\*]+$/;
> ---
>
> 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:
>
>
>
| |
| Max Michaels 2005-09-14, 5:46 pm |
| 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:
[vbcol=seagreen]
> 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:
>
| |
| Brad Fitzpatrick 2005-09-14, 5:46 pm |
| 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:
>
>
>
|
|
|
|
|