load balancing according to url

Andrey Feldman pr1 at pr1.ru
Mon Apr 29 11:27:51 UTC 2013


Hi.

Emm, maybe you want to make some kind of sharding by the value of your
cookie?

upstream <http://wiki.nginx.org/NginxHttpUpstreamModule#upstream> backend {
    server <http://wiki.nginx.org/NginxHttpCoreModule#server> server1;
    server <http://wiki.nginx.org/NginxHttpCoreModule#server> server2;
    hash   $customer_id;}





On Mon, Apr 29, 2013 at 3:03 PM, ESWAR RAO <eswar7028 at gmail.com> wrote:

> 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
>>
>
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>



-- 
-- 
Andrey Feldman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20130429/f5e888a0/attachment-0001.html>


More information about the nginx mailing list