nginx selecting the backend by header
in http block
upstream backend13 {
# sticky - link backend by cookies
# must build nginx with --add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng
sticky;
server 127.0.0.1:6001;
server 127.0.0.1:6002;
server 127.0.0.1:6003;
}
upstream backend47 {
sticky;
server 127.0.0.1:6004;
server 127.0.0.1:6005;
server 127.0.0.1:6006;
server 127.0.0.1:6007;
}
map $http_x_backend $backend {
default backend13;
13 backend13;
47 backend47;
}
in server block
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://$backend;
}
in backend server block
set_real_ip_from 127.0.0.1/32;
real_ip_header X-Forwarded-For;
testing
curl -c curl_cookie -b curl_cookie -sS --header "X-Backend: 13" http://192.168.0.65/