choosing backend based on header value

Harish Sundararaj tuxtoti at gmail.com
Mon Sep 3 23:29:21 UTC 2012


Hi Alexandr,
This is exactly what I thought. But then is there a way without
explicitly specifying the nodes.?
I understand the pitfalls, its just to be used for testing purposes.
(like sending a request to a test server)

Thanks
Harish

On Tue, Sep 4, 2012 at 4:49 AM, Alexandr Gomoliako <zzz at zzz.org.ua> wrote:
>> I have a requirement wherein I need to choose a backend based on the
>> value of a header sent by the client. But in all other cases where the
>> header is not set I would like to use the available upstream block
>> with whatever logic (wr/r) it is set to.
>>
>> For eg:
>>
>> upstream backend_boxes {
>> server 192.168.1.30:9001 weight=25;
>> server 192.168.1.45:9001 weight=75;
>> }
>>
>> locatinon ~ ^/test {
>> proxy_pass http://backend_boxes;
>> }
>>
>> But, say If X-Caching-Node is set to 192.168.1.50:9001 , I want the
>> /test request to go to 192.168.1.50:9001.
>>
>> I guess that should be possible?
>
> Sure. Be careful though, specify allowed nodes explicitly.
>
> map $http_x_caching_node $x {
>     default  backend_boxes;
>     192.168.1.50:9001  192.168.1.50:9001;
> }
>
> server {
>     location /test/ {
>         proxy_pass http://$x;
>     }
> }
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx



More information about the nginx mailing list