choosing backend based on header value

Alexandr Gomoliako zzz at zzz.org.ua
Mon Sep 3 23:19:11 UTC 2012


> 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;
    }
}



More information about the nginx mailing list