load balancing according to url

ESWAR RAO eswar7028 at gmail.com
Mon Apr 29 11:03:57 UTC 2013


Hi Antonio,

Thanks for the response.

I am unable to understand your solution.

As I said, I am unable to know which server served the requests to
respective customer-id.
So I cant write the below map directive.
map $customer_id $sticky_backend {
   default bad_gateway;
   <cust-id_1> <server 1>;
   <cust-id_2> <server 2>;
}

Thanks
Eswar


On Mon, Apr 29, 2013 at 2:31 PM, António P. P. Almeida <appa at perusio.net>wrote:

> You chain two map directives. Like this:
>
> map $uri $customer_id {
>     ~/customer/(?<cust_id>[^/]+)/.*$ $cust_id;
>
> }
>
> map $customer_id $sticky_backend {
>    default bad_gateway;
>    <cust-id_1> <server 1>;
>    <cust-id_2> <server 2>;
> }
>
>
> ----appa
>
>
>
> On Mon, Apr 29, 2013 at 8:27 AM, ESWAR RAO <eswar7028 at gmail.com> wrote:
>
>> Hi All,
>>
>> Can anyone please help me with the below requirement.
>>
>> Host machine contains a plugin and it communicates with a plugin handler
>> running on backend servers and nginx is used to load balance the requests.
>>
>> host machine(plugin) ===== >nginx as load balancer =====>3 backend
>> servers which hosts plugin handler
>>
>> I need to load balance the requests based on customer-id field in host
>> machine.
>> # curl '
>> http://localhost:8031/test1/test2/test3/customer/123456789999999999/......./
>>
>> customer-id: 123456789999999999
>> customer-id changes with customers.
>>
>> Since the requests come from same machine, I can't use ip_hash or cookie
>> based load balancing technique.
>>
>> My requirement is to load balance according to customer id and if same
>> request comes the same customer it should go to same earlier server which
>> served the request.
>>
>>
>> I am planning to extract the customer-id in nginx configuration file and
>> add them on the fly in the config file and compare the ids using "map"
>> directive. But unable to know which server served the requests to
>> customer-id:
>>
>> map $customer_id $sticky_backend {
>>    default bad_gateway;
>>    <cust-id_1> <server 1>;
>>    <cust-id_2> <server 2>;
>> }
>>  if ( $request_uri ~ ^/(.*)/(customer)/(.*?)/(.*)/ ) {
>>    set $customer_id $3;
>>
>> Thanks
>> Eswar
>>
>>
>> _______________________________________________
>> nginx mailing list
>> nginx at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx
>>
>
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20130429/3b6e80d7/attachment.html>


More information about the nginx mailing list