load balancing according to url

António P. P. Almeida appa at perusio.net
Mon Apr 29 09:01:34 UTC 2013


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20130429/f2644449/attachment.html>


More information about the nginx mailing list